はじめに
認証系について曖昧な知識が多かったので、ここらで調査して整理する
調査
OAuthとOIDCとSAMLの違い
- OAuth
- 認可
- ユーザーがわざわざ認証情報(パスワードやメールアドレス)を共有しなくても、アプリケーションがユーザーに代わってアクションを起こせるもの
- 例) hatenablogの投稿自動Tweet
- OIDC
- SAML
- フェデレーション認証
- SAML認証は特定のイントラネットやIdPにログインした後、特定のサービスに認証情報を再入力せずにアクセスできるようになるもの
- SAMLはIdPとサービス・プロバイダーの間で認証・認可データを交換するためのXMLベースの標準のこと。
- 例) Oktaにログインすれば他のサービスへのログインは自動でできる(SSO)
Identity Providers (IdPs)とは何なのか
- IdPとは
- デジタルのIDを保存・管理するサービス
- セキュリティを保護しながら、権限の追加や削除など、アクセス管理を行うための手段を提供する
- IdPのワークフロー
- IdPが解決してくれる組織の課題
- いろんなサービスのパスワードを覚える必要がなくなる(セキュリティ的にも向上する)
- 膨大な従業員の数だけのログインを準備する手間はもうなくなる
- 誰かがミスをしたときに、足跡記録が残るので、どこが原因かがすぐに特定できる
- データの連携がサービス間でとりやすい(らしい)→サイロ問題の解決
SSO ( Single Sign On ) とは
- SAML認証はSSOを実現する仕組みの一つ
- IdPで共有しているユーザーの識別子はNameIDと呼ばれる
- SSOとは?
- 1つのIDとパスワードで認証を行うことで、複数のサービスにアクセスできる仕組みのこと
- フェデレーション方式・エージェント方式・リバースプロキシ方式・代理認証方式などがある
SSOのそれぞれの方式の違いは?
Q. SSOにおける以下の方式をそれぞれ教えて。 - フェデレーション方式 - エージェント方式 - リバースプロキシ方式 - 代理認証方式 A. SSO (シングルサインオン) は、一度の認証で複数のサービスやアプリケーションにアクセスできるようにする技術です。以下に、主要なSSO方式を説明します。 フェデレーション方式: フェデレーション方式は、異なる組織間でのシングルサインオンを実現する方法です。主にSAML (Security Assertion Markup Language)、OAuth、OpenID Connectのようなプロトコルを使用します。これらのプロトコルを使用することで、異なる組織間で認証情報やアクセス許可をやり取りし、ユーザーが一度ログインするだけで複数のサービスを利用できるようになります。 エージェント方式: エージェント方式では、各アプリケーションにSSOエージェントと呼ばれるソフトウェアコンポーネントがインストールされます。ユーザーが認証を行うと、SSOエージェントがその情報をキャプチャし、セッション情報を生成します。ユーザーが他のアプリケーションにアクセスする際、エージェントはセッション情報を共有し、ユーザーが再度ログインすることなくアプリケーションを利用できるようにします。 リバースプロキシ方式: リバースプロキシ方式では、ネットワーク上のリバースプロキシサーバーがSSOを管理します。ユーザーは最初にリバースプロキシサーバーにアクセスし、認証を行います。認証後、リバースプロキシサーバーはユーザーのアクセス許可をチェックし、アクセス許可されたアプリケーションに対して、認証済みのセッション情報を引き継ぎます。これにより、ユーザーは一度のログインで複数のアプリケーションにアクセスできます。 代理認証方式: 代理認証方式では、一つの認証システムが他のシステムの認証情報を代理で保持します。ユーザーは、代理認証システムにログインし、そのシステムが他のアプリケーションの認証情報を代理で提供します。これにより、ユーザーは一度のログインで複数のアプリケーションにアクセスできます。代理認証方式は、ユーザー名とパスワードのペアを使用することが一般的ですが、他の認証方法(例えば、バイオメトリクスやワンタイムパスワード)も組み合わせることができます。この方式の利点は、認証情報が一元管理されているため、ユーザーのパスワード管理が容易になることです。ただし、代理認証システムが標的となるリスクが高まるため、セキュリティ対策が重要となります。 これらのSSO方式は、それぞれ異なる認証シナリオやセキュリティ要件に応じて使用されます。適切なSSO方式を選択することで、ユーザーエクスペリエンスの向上やセキュリティ強化、管理コスト削減などの効果が期待できます。引用元:ChatGPT
フェデレーション認証が一番いいっぽいな。