37 OIDCクライアントのソーシャル・アイデンティティ・プロバイダとの統合

OAMにはすぐに使用できるOIDCクライアント認証プラグインのOpenIDConnectPluginが付属しています。これによりIDCS、GoogleおよびFacebookなどのソーシャル・アイデンティティ・プロバイダと統合できます。

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

認証プロセスは次のようになります。

  1. OpenIDConnectPluginは、OIDCプロトコルを使用するサード・パーティのアイデンティティ・プロバイダに認証リクエストをリダイレクトします。

  2. サード・パーティのアイデンティティ・プロバイダ(IDP)はユーザーを認証します。

  3. IDPは認証リクエストをOAMにリダイレクトします。

  4. OAMはユーザーをアサートします。

  5. OAMはセッションを作成します。

aiaag_oidc_authentication_flow.pngの説明が続きます
図aiaag_oidc_authentication_flow.pngの説明

37.1 OpenIDConnectPluginについて

OpenIDConnectPluginは任意のOpenId2.0プロバイダと統合できる汎用プラグインです。このプラグインは、統合されたIDPにリクエストをリダイレクトします。IDPでユーザーを認証した後で、制御がOAMサーバーに戻ります

次の図に、すべての構成パラメータと必要な値を示します。

aiaag_oidc_openidconnectplugin.pngの説明が続きます
図aiaag_oidc_openidconnectplugin.pngの説明

プラグイン構成の必須のパラメータにはoauth_client_idoauth_client_secretおよびproviderがあります。

表37-1 OpenIDConnectPlugin: プラグイン構成のためのパラメータ

フィールド サンプル値 必須/オプション 説明

id_domain

 

オプション。

アイデンティティ・ドメインを入力します。OAMでは、すべてのアーティファクト(クライアント)がアイデンティティ・ドメインに作成されるため、これはIDPとしてOAMと統合するために必要です。

oauth_client_secret

12312312312asdasdasd1231231sdsadasd

必須

OAuthクライアント・シークレットを入力します。

token_end_point

https://graph.facebook.com/v2.11/oauth/access_token

オプション。

アクセス・トークン・エンドポイントを入力します。これは、IDPが検出URLをサポートしない場合のみ必要です。

authz_end_point

https://www.facebook.com/v2.11/dialog/oauth

オプション。

認可エンドポイントを入力します(IDPが検出URLをサポートしない場合のみ必要)

require_proxy

 

オプション。

プラグインでプロキシ構成を使用せず、IDPに直接リダイレクトする場合はfalseに設定します。

ノート:

IDPと接続するためにプロキシが必要な場合は、サーバーを起動する前に次の設定を追加します。Dhttp.proxy.Host=www-proxy.example.com -Dhttp.proxy.Port=80

provider

Facebook

または

oam

またはidcs

必須

このパッチ・リリースでは、次の理由でFacebookまたはoamまたはidcsのみをprovider値として使用してください。

  • FacebookはOpenID2.0仕様に準拠していません

  • OAMおよびIDCSの場合、デフォルトの電子メール属性がサポートされないため、このプロバイダのトークンからsubを読み取る必要があります。

ノート:

Googleなど、その他のOpenID2.0準拠プロバイダの場合は任意のキーを使用できます。

scope

 

オプション。

IDPに送信されるデフォルトの"scope"はopenid emailです。これを上書きする必要がある場合、このプラグイン・パラメータで新しいscopeを設定できます。

additional_parameters

   

現時点では使用されません。空白のままでかまいません

userinfo_end_point

https://graph.facebook.com/me

オプション。

ユーザー情報トークン・エンドポイントを入力します。これは、IDPが検出URLをサポートしない場合のみ必要です。

discovery_url

https://accounts.google.com

必須

IDP側にhttp(s)://URL hostの形式で検出URLを入力します。

認可、トークンおよびユーザー情報エンドポイントの情報が提供されます。

ベースURLの/.well-known/openid-configurationが検出URLに追加され、http(s)://URL host/.well-known/openid-configurationという必要な形式が作成されます。

プラグインはこの検出URLから認可、トークンおよびユーザー情報エンドポイントをフェッチし、このURLにリダイレクトします。

username_attr

   
このパラメータは、アイデンティティ・トークンから読み取る属性を示します。

provider

Username_attr value

理由

Facebook

name

"name"属性を介してユーザーの表示名を送信します。

例: {"name" : "John Doe"}

Google

email

"email"属性を介してユーザーの電子メールを送信します。

例: {"email" : "John.Doe@gmail.com"}

IDCS

sub

"sub"属性を介してユーザーの電子メールを送信します。

例: {"sub" : "John.Doe@oracle.com"}

oauth_client_id

asdad11sdfasda131231asdas

必須

OAuthクライアントIDを入力します。

プロバイダと必要なキー値の間に依存関係はありません。新しいプラグイン・パラメータのusername_attrは、アイデンティティ・トークンから読み取る属性を示します。

ノート:

サーバーを起動する前にDUseSunHttpHandler=trueを追加します。これをtrueに設定すると、プラグインはバックチャネルを介して外部IDPに接続し、トークンおよびユーザー情報の詳細をフェッチします。

37.2 認証モジュールおよびスキームとポリシーの変更

2つのステップからなる新しい認証モジュールを作成します。

  • OpenIDConnectPlugin

  • UserIdentificationPlugin

aiaag_oidc_authmod_steps.pngの説明が続きます
図aiaag_oidc_authmod_steps.pngの説明aiaag_oidc_authmod_stepsorch.pngの説明が続きます
図aiaag_oidc_authmod_stepsorch.pngの説明

UserIdentificationPluginは第2のステップとして必要です。OAMセッションの作成の前に、IDPにより認証されるユーザーをOAMによりアサートする必要があります。アイデンティティ・トークンで返されるユーザー属性はプロバイダによって異なります。ユーザー属性がsubjectの場合があり、これはuiddisplaynameまたはemail属性です。

OAMでは、次の表のようにKEY_LDAP_FILTERを変更して、IDStoreにこのユーザーをアサートします。

前提: IDPで認証されるユーザーがOAM–IDストアに存在する必要があります。

aiaag_oidc_authmod_stepdetails.pngの説明が続きます
図aiaag_oidc_authmod_stepdetails.pngの説明

表37-2 UserIdentificationPlugin: フィルタ変更のためのパラメータ

プロバイダ OpenIDConnectPluginが返すユーザー属性 フィルタ

Facebook

subdisplaynameを返します

&(objectclass=inetorgperson)(DISPLAYNAME={KEY_USERNAME})

これは、所定のdisplaynameのユーザーについてLDAP検索を実行する必要があることを示します。

OAM

subuidを返します(構成済のデフォルト属性)

デフォルトのemail属性はサポートされません。

IDCS

subemailを返します

&(objectclass=inetorgperson)(MAIL={KEY_USERNAME})

Google

emailemailを返します

&(objectclass=inetorgperson)(MAIL={KEY_USERNAME})

37.3 認証スキームの変更

前述の項で作成したモジュールを使用する新しい認証スキームを作成します

この新しい認証スキームに対して、チャレンジ・パラメータinitial_command=NONEを設定して制御をプラグインに渡します

aiaag_oidc_authscheme_fbscheme.pngの説明が続きます
図aiaag_oidc_authscheme_fbscheme.pngの説明

37.4 ポリシーの変更

保護されたリソースのアプリケーション・ドメインで認証ポリシーを変更し、「認証スキームの変更」で作成したスキームを使用します。保護されたリソースにアクセスすると、制御がこのモジュールに渡されます。OpenIDConnectPluginはIDPエンドポイントにリダイレクトします。IDPでの認証後にサーバーに制御が戻ると、UserIdentificationpluginはユーザーをアサートし、OAMでセッションが作成されます。

37.5 IDCSとの統合

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

    ノート:

    クライアントの作成中に、必ず「認可コード」付与タイプを選択します。クライアントのredirect_uriは、資格証明が送信されるOAMサーバーのエンドポイントの必要があります。例: http(s)://OAMServer LBR Host:port/oam/server/auth_cred_submit
  2. 「アプリケーション」の下部で新しいアプリケーションを作成します。
  3. client_idclient_secretをノートにとります。aiaag_oidc_integr_idcs_2.pngの説明が続きます
    図aiaag_oidc_integr_idcs_2.pngの説明
  4. OpenIDConnectPluginの次の構成パラメータを設定します。aiaag_oidc_integr_idcs_3.pngの説明が続きます
    図aiaag_oidc_integr_idcs_3.pngの説明

    ノート:

    検出URLによりホストおよびポート情報のみを提供する必要があります。プラグインにより/.well-known/openid-configurationが追加され、完全なURLが生成されます。
  5. OAMのIDStoreにユーザーが存在することを確認します。aiaag_oidc_integr_idcs_4.pngの説明が続きます
    図aiaag_oidc_integr_idcs_4.pngの説明
  6. 保護されたリソースにアクセスします。
  7. 認証のためにIDCSログイン・ページにリダイレクトされます。

37.6 Googleとの統合

OAMにはすぐに使用できるOIDCクライアント認証プラグインのOpenIDConnectPluginが付属しています。これによりIDCS、GoogleおよびFacebookなどのソーシャル・アイデンティティ・プロバイダと統合できます。OAuth/OpenIDConnect2.0サーバーとしての機能以外にも、Oracle Access Manager (OAM)は認証をOpenIDConnect-ソーシャル・アイデンティティ・プロバイダ(IDCS、Google、Facebookなど)またはOAM自体に委任することもできるため、リライイング・パーティ(サービス・プロバイダ)のように機能します。ユーザーを認証した後でIDPはOAMにリダイレクトし、OAMによりユーザーがアサートされ、OAMセッションが作成されます。
  1. 次の図に示すように、console.developers.google.comでクライアントを作成します。
  2. client_idおよびclient_secretをノートにとります。
  3. クライアントに対して、OAMサーバーのエンドポイントをredirect_uriとして指定します。資格証明はこのエンドポイントで送信されます(たとえば、http(s)://OAM Host:port/oam/server/auth_cred_submit)aiaag_oidc_integr_google_1.pngの説明が続きます
    図aiaag_oidc_integr_google_1.pngの説明
  4. OpenIDConnectPluginの次の構成パラメータを設定します。aiaag_oidc_integr_google_2.pngの説明が続きます
    図aiaag_oidc_integr_google_2.pngの説明
  5. OAMのIDStoreにユーザーが存在することを確認します。aiaag_oidc_integr_google_3.pngの説明が続きます
    図aiaag_oidc_integr_google_3.pngの説明
  6. 保護されたリソースにアクセスします。
  7. 認証のためにGoogleログイン・ページにリダイレクトされます。

37.7 Facebookとの統合

OAMにはすぐに使用できるOIDCクライアント認証プラグインのOpenIDConnectPluginが付属しています。これによりIDCS、GoogleおよびFacebookなどのソーシャル・アイデンティティ・プロバイダと統合できます。OAuth/OpenIDConnect2.0サーバーとしての機能以外にも、Oracle Access Manager (OAM)は認証をOpenIDConnect-ソーシャル・アイデンティティ・プロバイダ(IDCS、Google、Facebookなど)またはOAM自体に委任することもできるため、リライイング・パーティ(サービス・プロバイダ)のように機能します。ユーザーを認証した後でIDPはOAMにリダイレクトし、OAMによりユーザーがアサートされ、OAMセッションが作成されます。
  1. 次の図に示すように、developers.facebook.comでクライアントを作成します。ms_oamathn_sp.gifの説明が続きます
    図ms_oamathn_sp.gifの説明
  2. client_idおよびclient_secretをノートにとります。aiaag_oidc_integr_fb_2.pngの説明が続きます
    図aiaag_oidc_integr_fb_2.pngの説明
  3. クライアントに対して、OAMサーバーのエンドポイントをredirect_uriとして指定します。資格証明はこのエンドポイントで送信されます(たとえば、http(s)://OAM Host:port/oam/server/auth_cred_submit)aiaag_oidc_integr_fb_3.pngの説明が続きます
    図aiaag_oidc_integr_fb_3.pngの説明
  4. OpenIDConnectPluginの次の構成パラメータを設定します。aiaag_oidc_integr_fb_4.pngの説明が続きます
    図aiaag_oidc_integr_fb_4.pngの説明
  5. OAMのIDStoreにユーザーが存在することを確認します。aiaag_oidc_integr_fb_5.pngの説明が続きます
    図aiaag_oidc_integr_fb_5.pngの説明
  6. 保護されたリソースにアクセスします。
  7. 認証のためにFacebookログイン・ページにリダイレクトされます。