社内認証基盤から社内アプリケーションにID連携する
この環境の特徴
- 社内認証基盤から、同ネットワーク内にある社内のアプリケーションにシングルサインオンできます。
- 社外から社内の認証基盤にHTTPアクセスが可能な場合はAuthorization Code Flowを用いて認証連携が行えます。
- 社外から社内の認証基盤にHTTPアクセスが不可能な場合であってもImplicit Flowを用いて認証連携が行えます。
- 認証基盤及び社内アプリケーションを、全て社内のネットワーク内で収めることが可能です。
画面イメージ
ユーザがアプリケーションにアクセスすると、OpenAMに対して認証要求が送られ、サインイン画面が表示されます。
ここで自身のメールアドレス等、指定のログインIDとパスワードを入力してLOG INを選択します。
サインイン完了後に同意画面が表示され、連携される情報が表示されます。
連携内容に同意する場合は、Allow を選択します。
同意が完了すると、アプリケーションにリダイレクトされます。
今回は結果として連携される情報を分かりやすくするために、Relying Party側ではphpinfoの情報を表示します。
バックエンドのアプリケーションには、Claimの値がOIDC_CLAIM
から始まるヘッダに乗って連携されます。
Azure Active Directoryに対してscope=openid
で認証要求を送ると、下記クレームが返却されます。
auth_time, realm, exp, tokenType, iat, access_token, access_token_expires
Claim名 | 内容 |
---|---|
sub | アプリケーションのユーザ識別子 |
at_hash | アクセストークンのハッシュ値 |
auditTrackingId | 監査ログでトークンを追跡するための識別子 |
iss | レスポンスを返した Issuer の Issuer Identifier |
tokenName | 返却されるトークンの種類 |
nonce | Client セッションと ID Token を紐づける文字列値 |
aud | ID Token の想定されるオーディエンス (Audience) |
c_hash | 認可コードのハッシュ値 |
org.forgerock.openidconnect.ops | OpenAM内のセッションと紐付く値であり、SLO時等に利用される |
azp | ID Token 発行対象である認可された関係者 (authorized party) |
auth_time | End-User の認証が発生した時刻 |
realm | 認証を行ったレルム名 |
exp | トークンが有効である期間(終了時刻) |
tokenType | トークンの種別 |
iat | トークンが発行された時刻 |
Claimに加えて、access_token
とその期限を表すaccess_token_expires
も連携されます。
scopeの値にprofile
を追加すると、下記パラメータも追加で連携されます
Claim名 | 内容 |
---|---|
name | ユーザのフルネーム |
given_name | ユーザの名前 |
family_name | ユーザの姓 |
参考実装
実装・設定上の注意点
- OpenAMを検証環境として構築していた場合等、サーバ証明書に自己署名証明書等を利用している場合にはmod_auth_openidcからのトークンリクエストが通りません。したがって、正しい証明書を当てるか、当該環境が検証環境なのであれば
OIDCSSLValidateServer Off
という設定をmod_auth_openidc側に設定することで、証明書の検証を無視できます。