Oracle® Fusion Middleware Oracle Access Management開発者ガイド 11g リリース2 (11.1.2.1) B69537-05 |
|
前 |
次 |
この章では、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を選択し、ユーザー属性マッピングを定義します。