| Oracle® Fusion Middleware Oracle Access Management開発者ガイド 11g リリース2 (11.1.2.2.0) for All Platforms B69537-08 |
|
![]() 前 |
![]() 次 |
この章では、Mobile and Social Javaインタフェースを拡張して、モバイル・サービス用の新しい認証サービス・プロバイダを追加する方法について説明します。この章の内容は次のとおりです。
この項の項目は次のとおりです。
カスタム認証サービス・プロバイダを作成するには、次の2つのカスタム・クラスを記述する必要があります。
TokenService: 最初にこのインタフェースを実装します。これは、モバイル以外のアプリケーションと連動する基本的なカスタム・トークン・プロバイダです。
MobileCompositeTokenServiceProvider: このクラスを拡張してモバイル・アプリケーションをサポートします。ここでは、モバイルSSOをサポートするために作成したカスタム・トークン・プロバイダを再利用しています。モバイル・アプリケーションをサポートする必要がない場合は、このクラスを拡張する必要はありません。
実装するAPIの詳細は、TokenService Javaドキュメントを参照してください。LifecycleServiceProviderおよびUserAuthenticatorインタフェースを実装する必要もあることに注意してください。
カスタム・トークン・プロバイダでは、この認証サービス・プロバイダを再利用してモバイル・クライアントをサポートするために、createTokens()メソッドを実装する必要があります。
Tokenオブジェクトを戻す場合(成功時)またはRESTUnauthorizedExceptionをスローする場合(失敗時)、PluginContextオブジェクトを作成する必要があります。このオブジェクトは、戻されるTokenオブジェクトか、スローされるRESTUnauthorizedExceptionに含まれる必要があります。
各サービス・ドメインには、セキュリティ・ハンドラ・プラグインがあります。セキュリティ・ハンドラ・プラグインはユーザー動作パターンを追跡し、必要に応じて、認証チャレンジ(ナレッジベース認証チャレンジなど)を発行できます。OAAMSecurityHandlerPluginは、Mobile and Socialに含まれています。ナレッジベース認証(KBA)チャレンジには、Oracle Adaptive Access Managerの統合が必要です。
通常、認証サービス・プロバイダ・トークン操作の後で、セキュリティ・ハンドラ・プラグインが起動します。このPluginContextのデータは、セキュリティ・プラグインとの通信に使用されます。TokenオブジェクトまたはRESTUnauthorizedExceptionオブジェクトにPluginContextオブジェクトが含まれない場合、構成されたセキュリティ・プラグインは起動されません。
PluginContextオブジェクトは、PluginDataFactory APIを介して作成されます。PluginContext APIは、セキュリティ・イベントのタイプ、ユーザーID、クライアント・アプリケーションID、それらの対応するID認証ステータスとタイプなどのセキュリティ・データを収集します。詳細は、Javadocを参照してください。
このクラスを拡張して、カスタム・トークン・サービス・プロバイダを再使用し、モバイル・デバイスをサポートします。
getComponentTokenServiceProviderClass() APIを実装します。次のサンプル・コードを参照してください。
protected Class getComponentTokenServiceProviderClass() {
return CustomTokenProvider.class;
// CustomTokenProvider is the class name you implemented. Change the name to
// the name that you used when implementing the TokenService.
}
詳細は、このクラスのJavaドキュメントを参照してください。
カスタム認証サービス・プロバイダは次のように構築します。
oic_rest.jarファイル、oic_common.jarファイルおよびカスタム・コードに必要な追加のJARファイルを収集します。
次に例を示します。
com/example/tokenprovider/MyTokenProvider.java implementing TokenService com/example/tokenprovider/MobileMyTokenProvider.java extending MobileCompositeTokenServiceProvider
カスタム・トークン・プロバイダを構築します。
次に例を示します。
javac -cp ./oic_rest.jar:./oic_common.jar com/example/tokenprovider/MyTokenProvider.java javac -cp ./oic_rest.jar:./oic_common.jar:. com/example/tokenprovider/MobileMyTokenProvider.java
JARファイルを構築します。
次に例を示します。
jar cvf mytokenpro.jar com/example/tokenprovider/*.class
カスタム認証サービス・プロバイダは次のようにデプロイします。
mytokenpro.jarをデプロイメントのfmwconfig/oic/pluginsディレクトリにコピーします。
ここでJARファイルは、Mobile and Socialによって動的に選択されます。カスタム・サービス・プロバイダに追加のJARファイルが必要な場合、これらのファイルは、コンテナのCLASSPATHで使用できるようにする必要があります。
管理コンソールからカスタム・トークン・プロバイダを構成するには、「システム構成」→Mobile and Social→「サービス・プロバイダ」→「認証サービス・プロバイダ」を選択します。
たとえば、MyTokenProviderのような、新しいサービス・プロバイダを作成します。
モバイルSSOアプリケーション用のカスタム・トークン・プロバイダを構成します。
MobileCompositeTokenServiceProviderを実装している場合は、管理コンソールから「システム構成」→Mobile and Social→「モバイル・サービス」→「認証サービス・プロバイダ」を選択します。
たとえば、MobileMyTokenProviderのような、新しいサービス・プロバイダを作成します。
手順2および3で定義しているように、カスタム・トークン・プロバイダを使用する認証サービス・インスタンスを構成します。
管理コンソールから、「システム構成」→Mobile and Social→「モバイル・サービス」→「サービス・ドメイン」→サービス・ドメインの選択→「認証サービス」を選択します。
たとえば、MyTokenServiceのような、新しいインスタンスを作成します。
手順2および3で定義しているように、カスタム・モバイル・トークン・プロバイダを使用している認証サービス・インスタンスを定義します。
管理コンソールから、「システム構成」→Mobile and Social→「モバイル・サービス」→「サービス・ドメイン」→サービス・ドメインの選択→「認証サービス」を選択します。
たとえば、MobileMyAuthnServiceのような、新しいインスタンスを作成します。
これでカスタム認証サービス・プロバイダがデプロイメントで使用できるようになりました。
Mobile and Socialでは、Google、LinkedIn、TwitterおよびYahooのアイデンティティ・プロバイダをサポートしています。その他のOpenIDおよびOAuthサービス・プロバイダを追加するには、IdentityProvider Javaインタフェースを実装し、システム管理コンソールを使用してMobile and Socialデプロイメントにプロバイダを追加します。
この項の項目は次のとおりです。
このインタフェースには、次の3つのメソッドがあります。
authenticateUser(): このメソッドは、アイデンティティ・プロバイダを使用してユーザーを認証するプロセスを開始します。認証後、アイデンティティ・プロバイダは、認証リクエストで送信された戻りURLを使用して、Mobile and Socialサーバーにアイデンティティ・プロファイル情報を戻します。
次の2つの戻りURLオプションがあります。
https://host.example.com:port/oic_rp/popup: アイデンティティ・プロバイダ・ログイン・ページがポップアップ・ウィンドウで開かれる場合はこのオプションを使用します。
https://host.example.com:port/oic_rp /return: アイデンティティ・プロバイダ・ログイン・ページがアプリケーションのログイン・ページと同じブラウザ・ウィンドウで開かれる場合は、このオプションを使用します。
getAccessToken(): アイデンティティ・プロバイダがOAuthプロトコルを使用する場合、Mobile and Socialサーバーはこのメソッドを使用して、アクセス・トークンを取得する必要があります。Mobile and Socialサーバーはアクセス・トークンを使用して、ユーザー・トークンを取得します。
getUserProfile(): このメソッドは、アイデンティティ・プロバイダからユーザー・プロファイルを取得します。
カスタム・アイデンティティ・サービス・プロバイダは次のように構築します。
oic_rp.jarファイル、oic_common.jarファイルおよびj2ee.jarファイルを収集します。
クラスを構築します。
たとえば、アイデンティティ・プロバイダ名がXYZである場合:
javac -cp ./j2ee.jar:./oic_rp.jar:./oic_common.jar com/xyz/custom/idp/XYZImpl.java
カスタム・コードによって必要に応じて、JARファイルを追加します。
JARファイルを構築します。
次に例を示します。
jar cvf xyz-idp.jar com/xyz/custom/idp/XYZImpl.class
カスタム認証サービス・プロバイダは次のようにデプロイします。次の手順は、XYZProviderを例として使用します。
xyz-idp.jarをデプロイメントのfmwconfig/oic/pluginsディレクトリにコピーします。
ここでJARファイルは、Mobile and Socialによって動的に選択されます。カスタム・サービス・プロバイダに追加のJARファイルが必要な場合、これらのファイルは、コンテナのCLASSPATHで使用できるようにする必要があります。
管理コンソールからカスタム・アイデンティティ・プロバイダを構成するには、「システム構成」→Mobile and Social→「インターネット・アイデンティティ・サービス」を選択します。
「インターネット・アイデンティティ・プロバイダ」セクションで、「作成」をクリックし、たとえばXYZProviderのような、新しいインターネット・アイデンティティ・プロバイダを追加します。
「プロトコル属性」の下で必要な属性を定義します。これらの属性は、カスタム実装で使用されます。
「返されたユーザー属性」セクションでユーザー属性を定義します。これらの属性は、getUserProfile()メソッド・ロジックの一部としてカスタム実装で使用されます。
または、管理コンソールを使用するかわりに、次のXMLをoic_rp.xmlに追加します。
<InternetIdentityProvider description="XYZ OAuth Provider" name="XYZProvider">
<icon>XYZ.gif</icon>
<protocolType>OAuth</protocolType>
<userAttribute>
<name>id</name>
<value>id</value>
</userAttribute>
<userAttribute>
<name>first_name</name>
<value>first_name</value>
</userAttribute>
<userAttribute>
<name>last_name</name>
<value>last_name</value>
</userAttribute>
<userAttribute>
<name>email</name>
<value>email</value>
</userAttribute>
<userAttribute>
<name>location</name>
<value>location</value>
</userAttribute>
<userAttribute>
<name>birthday</name>
<value>birthday</value>
</userAttribute>
<userAttribute>
<name>gender</name>
<value>gender</value>
</userAttribute>
<userAttribute>
<name>language</name>
<value>language</value>
</userAttribute>
<userAttribute>
<name>country</name>
<value>country</value>
</userAttribute>
<userAttribute>
<name>profile_image_url</name>
<value>profile_image_url</value>
</userAttribute>
<providerImplClass>com.xyz.custom.idp.XYZImpl</providerImplClass>
</InternetIdentityProvider>
カスタム・アイデンティティ・プロバイダを使用するアプリケーション・プロファイルを作成または編集します。
詳細は、『Oracle Fusion Middleware Oracle Access Management管理者ガイド』のアプリケーション・プロファイルの編集または作成に関する項を参照してください。
「アプリケーション・ユーザー属性とインターネット・アイデンティティ・プロバイダ・ユーザー属性のマッピング」セクションで、XYZProviderを選択し、ユーザー属性マッピングを定義します。