41 OIDCクライアントのソーシャル・アイデンティティ・プロバイダとの統合
OAMにはすぐに使用できるOIDCクライアント認証プラグインのOpenIDConnectPluginが付属しています。これによりIDCS、GoogleおよびFacebookなどのソーシャル・アイデンティティ・プロバイダと統合できます。
OAuth/OpenIDConnect2.0サーバーとしての機能以外にも、Oracle Access Manager (OAM)は認証をOpenIDConnect-ソーシャル・アイデンティティ・プロバイダ(IDCS、Google、Facebookなど)またはOAM自体に委任することもできるため、リライイング・パーティ(サービス・プロバイダ)のように機能します。ユーザーを認証した後でIDPはOAMにリダイレクトし、OAMによりユーザーがアサートされ、OAMセッションが作成されます。
認証プロセスは次のようになります。
-
OpenIDConnectPluginは、OIDCプロトコルを使用するサード・パーティのアイデンティティ・プロバイダに認証リクエストをリダイレクトします。
-
サード・パーティのアイデンティティ・プロバイダ(IDP)はユーザーを認証します。
-
IDPは認証リクエストをOAMにリダイレクトします。
-
OAMはユーザーをアサートします。
-
OAMはセッションを作成します。

図aiaag_oidc_authentication_flow.pngの説明
41.1 OpenIDConnectPluginについて
OpenIDConnectPluginは任意のOpenId2.0プロバイダと統合できる汎用プラグインです。このプラグインは、統合されたIDPにリクエストをリダイレクトします。IDPでユーザーを認証した後で、制御がOAMサーバーに戻ります
プラグイン構成の必須のパラメータにはoauth_client_id、oauth_client_secretおよびproviderがあります。
表41-1 OpenIDConnectPlugin: プラグイン構成のためのパラメータ
フィールド | サンプル値 | 必須/オプション | 説明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id_domain |
オプション。 |
アイデンティティ・ドメインを入力します。OAMでは、すべてのアーティファクト(クライアント)がアイデンティティ・ドメインに作成されるため、これはIDPとしてOAMと統合するために必要です。 |
|||||||||||||
oauth_client_secret |
12312312312asdasdasd1231231sdsadasd |
必須 |
OAuthクライアント・シークレットを入力します。 |
||||||||||||
token_end_point |
オプション。 |
アクセス・トークン・エンドポイントを入力します。これは、IDPが検出URLをサポートしない場合のみ必要です。 |
|||||||||||||
authz_end_point |
オプション。 |
認可エンドポイントを入力します(IDPが検出URLをサポートしない場合のみ必要) |
|||||||||||||
require_proxy |
オプション。 |
プラグインでプロキシ構成を使用せず、IDPに直接リダイレクトする場合はfalseに設定します。 ノート: IDPと接続するためにプロキシが必要な場合は、サーバーを起動する前に次の設定を追加します。Dhttp.proxy.Host=www-proxy.example.com -Dhttp.proxy.Port=80 |
|||||||||||||
provider |
または oam またはidcs |
必須 |
このパッチ・リリースでは、次の理由でFacebookまたはoamまたはidcsのみをprovider値として使用してください。
ノート: Googleなど、その他のOpenID2.0準拠プロバイダの場合は任意のキーを使用できます。 |
||||||||||||
scope |
オプション。 |
IDPに送信されるデフォルトの"scope"はopenid emailです。これを上書きする必要がある場合、このプラグイン・パラメータで新しいscopeを設定できます。 |
|||||||||||||
additional_parameters |
attributes=profile,email;protocol=http;namespace=oidc | オプション。 |
さらに次の属性と値を指定します。属性の区切りにはセミコロン(
; )を使用し、値の区切りにはカンマ(, )を使用します。
ノート: デフォルトでは、プロトコルが指定されない場合、https が使用されます。
|
||||||||||||
userinfo_end_point |
http://graph.facebook.com/me |
オプション。 |
ユーザー情報トークン・エンドポイントを入力します。これは、IDPが検出URLをサポートしない場合のみ必要です。 |
||||||||||||
discovery_url |
必須 |
IDP側にhttp(s)://URL hostの形式で検出URLを入力します。 認可、トークンおよびユーザー情報エンドポイントの情報が提供されます。 ベースURLの/.well-known/openid-configurationが検出URLに追加され、http(s)://URL host/.well-known/openid-configurationという必要な形式が作成されます。 プラグインはこの検出URLから認可、トークンおよびユーザー情報エンドポイントをフェッチし、このURLにリダイレクトします。 |
|||||||||||||
username_attr |
このパラメータは、アイデンティティ・トークンから読み取る属性を示します。
|
||||||||||||||
oauth_client_id |
asdad11sdfasda131231asdas |
必須 |
OAuthクライアントIDを入力します。 |
プロバイダと必要なキー値の間に依存関係はありません。新しいプラグイン・パラメータのusername_attrは、アイデンティティ・トークンから読み取る属性を示します。
ノート:
サーバーを起動する前にDUseSunHttpHandler=trueを追加します。これをtrueに設定すると、プラグインはバックチャネルを介して外部IDPに接続し、トークンおよびユーザー情報の詳細をフェッチします。41.2 認証モジュールおよびスキームとポリシーの変更
2つのステップからなる新しい認証モジュールを作成します。
-
OpenIDConnectPlugin
-
UserIdentificationPlugin

図aiaag_oidc_authmod_steps.pngの説明

図aiaag_oidc_authmod_stepsorch.pngの説明
UserIdentificationPluginは第2のステップとして必要です。OAMセッションの作成の前に、IDPにより認証されるユーザーをOAMによりアサートする必要があります。アイデンティティ・トークンで返されるユーザー属性はプロバイダによって異なります。ユーザー属性がsubjectの場合があり、これはuid、displaynameまたはemail属性です。
OAMでは、次の表のようにKEY_LDAP_FILTERを変更して、IDStoreにこのユーザーをアサートします。
前提: IDPで認証されるユーザーがOAM–IDストアに存在する必要があります。

図aiaag_oidc_authmod_stepdetails.pngの説明
表41-2 UserIdentificationPlugin: フィルタ変更のためのパラメータ
プロバイダ | OpenIDConnectPluginが返すユーザー属性 | フィルタ |
---|---|---|
|
subはdisplaynameを返します |
&(objectclass=inetorgperson)(DISPLAYNAME={KEY_USERNAME}) これは、所定のdisplaynameのユーザーについてLDAP検索を実行する必要があることを示します。 |
OAM |
subはuidを返します(構成済のデフォルト属性) |
デフォルトのemail属性はサポートされません。 |
IDCS |
subはemailを返します |
&(objectclass=inetorgperson)(MAIL={KEY_USERNAME}) |
|
emailはemailを返します |
&(objectclass=inetorgperson)(MAIL={KEY_USERNAME}) |
41.3 認証スキームの変更
前述の項で作成したモジュールを使用する新しい認証スキームを作成します
この新しい認証スキームに対して、チャレンジ・パラメータinitial_command=NONEを設定して制御をプラグインに渡します

図aiaag_oidc_authscheme_fbscheme.pngの説明
41.4 ポリシーの変更
保護されたリソースのアプリケーション・ドメインで認証ポリシーを変更し、「認証スキームの変更」で作成したスキームを使用します。保護されたリソースにアクセスすると、制御がこのモジュールに渡されます。OpenIDConnectPluginはIDPエンドポイントにリダイレクトします。IDPでの認証後にサーバーに制御が戻ると、UserIdentificationpluginはユーザーをアサートし、OAMでセッションが作成されます。
41.5 IDCSとの統合
41.6 Googleとの統合
- 次の図に示すように、
console.developers.google.com
でクライアントを作成します。 client_id
およびclient_secret
をノートにとります。- クライアントに対して、OAMサーバーのエンドポイントを
redirect_uri
として指定します。資格証明はこのエンドポイントで送信されます(たとえば、http(s)://OAM Host:port/oam/server/auth_cred_submit)
。
図aiaag_oidc_integr_google_1.pngの説明 - OpenIDConnectPluginの次の構成パラメータを設定します。
図aiaag_oidc_integr_google_2.pngの説明 - OAMのIDStoreにユーザーが存在することを確認します。
図aiaag_oidc_integr_google_3.pngの説明 - 保護されたリソースにアクセスします。
- 認証のためにGoogleログイン・ページにリダイレクトされます。
41.7 Facebookとの統合
- 次の図に示すように、
developers.facebook.com
でクライアントを作成します。
図ms_oamathn_sp.gifの説明 client_id
およびclient_secret
をノートにとります。
図aiaag_oidc_integr_fb_2.pngの説明- クライアントに対して、OAMサーバーのエンドポイントを
redirect_uri
として指定します。資格証明はこのエンドポイントで送信されます(たとえば、http(s)://OAM Host:port/oam/server/auth_cred_submit)
。
図aiaag_oidc_integr_fb_3.pngの説明 - OpenIDConnectPluginの次の構成パラメータを設定します。
図aiaag_oidc_integr_fb_4.pngの説明 - OAMのIDStoreにユーザーが存在することを確認します。
図aiaag_oidc_integr_fb_5.pngの説明 - 保護されたリソースにアクセスします。
- 認証のためにFacebookログイン・ページにリダイレクトされます。