A collection of notes and resources
OpenID Connect(OIDC)は、OAuth 2.0プロトコルの上に構築された認証レイヤーです。OIDCでは、認証プロバイダー(Identity Provider、IdP)がユーザーまたはアプリケーションの認証を行い、その結果としてJWT(JSON Web Token)形式のIDトークンを発行します。このトークンには、認証されたエンティティに関する情報(claims)が含まれており、他のサービスがこのトークンを検証することで認証状態を確認できます。
OIDCにおける重要な概念:
認証プロバイダー(IdP):認証を行うサービス(この場合はauth.company.com)
クライアント:認証を要求するアプリケーション(Webアプリケーション)
IDトークン:認証の証明として発行されるJWTトークン
Audience(aud):トークンが intended される対象を識別する値
Issuer(iss):トークンを発行した認証プロバイダーを識別する値
AWS IAM認証プロバイダーは、外部の認証システム(OIDC、SAML等)をAWSが信頼できるエンティティとして登録するための仕組みです。OIDC認証プロバイダーを作成する際には、以下の情報が必要です:
プロバイダーURL:認証プロバイダーのエンドポイントURL(例:https://auth.company.com)/)
Audience:このプロバイダーが発行するトークンの対象となるクライアントID
サムプリント:プロバイダーのSSL証明書のSHA-1ハッシュ値(証明書の検証用)
IAM認証プロバイダーを作成することで、AWSはそのプロバイダーから発行されたトークンの署名を検証し、信頼できるトークンかどうかを判断できるようになります。
AssumeRoleWithWebIdentity APIは、OIDC、OAuth、またはSAMLトークンを使用してAWSの一時的な認証情報を取得するためのSTS(Security Token Service)APIです。このAPIの動作フロー:
WebアプリケーションがOIDC認証プロバイダーからIDトークンを取得
AssumeRoleWithWebIdentity APIにIDトークンとロールARNを送信
AWS STSがトークンを検証し、有効であれば一時的な認証情報を返却
一時的な認証情報(アクセスキー、シークレットキー、セッショントークン)を使用してAWS APIを呼び出し
この方法の利点:
長期的なアクセスキーを保存する必要がない
認証情報は自動的に期限切れになる(通常1時間)
細かい権限制御が可能
監査ログに認証情報の使用履歴が記録される