メッセージ コンシューマ プラグインによるアサーション処理のカスタマイズ(SAML 1.x)
目次
casso127jpjp
目次
2
casso127jpjp
メッセージ コンシューマ プラグインは、メッセージ コンシューマ プラグインを実装する Java プログラムです。プラグインを使用することにより、アサーションを拒否したり、ステータス コードを返したりなど、アサーションを処理するための独自のビジネス ロジックを実装できます。この追加の処理は、アサーションの標準的な処理と連携して動作します。
認証時、
Single Sign-On
はまず、ユーザをそのローカル ユーザ ストアにマップすることによりアサーションの処理を試みます。そのユーザが見つからない場合、Single Sign-On
はメッセージ コンシューマ プラグインの postDisambiguateUser メソッドをコールします。プラグインで正常にユーザが検索された場合、
Single Sign-On
は認証の第 2 段階に進みます。プラグインでユーザをローカル ユーザ ストアにマップできない場合、プラグインから UserNotFound エラーが返されます。プラグインでは、オプションでリダイレクト URL 機能を使用できます。コンシューマ プラグインを使用しない場合、リダイレクト URL は、SAML 認証方式によって生成されるエラーに基づきます。認証の第 2 段階では、
Single Sign-On
はメッセージ コンシューマ プラグインの postAuthenticateUser メソッドをコールします(プラグインが設定されている場合)。メソッドが成功した場合、Single Sign-On
はユーザをリクエストされたリソースにリダイレクトします。メソッドが失敗する場合、ユーザを失敗ページに移動するようにプラグインを設定できます。失敗ページとして、認証方式設定で指定可能なリダイレクト URL の 1 つを使用できます。プラグインを設定する方法
- Single Sign-OnSDK をインストールします(未インストールの場合)。
- MessageconsumerPlugin.java インターフェースを実装します(Single Sign-OnSDK に含まれています)。
- メッセージ コンシューマ プラグイン実装クラスを展開します。
- 管理 UI でメッセージ コンシューマ プラグインを有効にします。
MessageConsumerPlugin インターフェースの実装
casso127jpjp
MessageConsumerPlugin.java インターフェースを実装するにより、カスタム メッセージ コンシューマ プラグインを作成します。実装クラスの最小要件は、以下の手順に示されています。
以下の手順に従います。
- パラメータが含まれない公のデフォルト コンストラクタ メソッドを提供します。
- 実装がステートレスになるように、コードを提供します。多数のスレッドが 1 つのプラグイン クラスを使用できる必要があります。
- 現実の要件に応じて、インターフェース内のメソッドを実装します。MessageConsumerPlugin には、以下の 4 つのメソッドが含まれています。
- init()プラグインが必要とするあらゆる初期化手順を実行します。プラグインがロードされると、Single Sign-Onは各プラグイン インスタンスに対してこのメソッドを 1 回コールします。
- release()プラグインが必要とするあらゆる要約手順を実行します。がシャットダウンしているとき、Single Sign-OnSingle Sign-Onは各プラグイン インスタンスに対してこのメソッドを 1 度コールします。
- postDisambiguateUser()認証方式がユーザの不明瞭解消処理を実行できない場合に、この処理を提供します。また、このメソッドは、新しいフェデレーション ユーザに関するデータをユーザ ストアに追加できます。このメソッドは、復号されたアサーションを受信します。復号されたアサーションは、キー「_DecryptedAssertion」の下のプラグインに渡されるプロパティに追加されます。
- postAuthenticateUser()ポリシー サーバ処理が成功か失敗かにかかわらず、アサーション処理の最終結果を決定する追加のコードを提供します。
Single Sign-On
は、Message Consumer プラグイン クラスの以下のサンプルを提供します。MessageConsumerPluginSample.java (
installation_home
\sdk\samples\messageconsumerplugin)MessageConsumerSAML20.java (
installation_home
\sdk\samples\authextensionsaml20)メッセージ コンシューマ プラグインの展開
casso127jpjp
MessageConsumerPlugin インターフェースの実装クラスをコード化した後、それをコンパイルし、
Single Sign-On
が実行可能ファイルを認識できることを確認します。メッセージ コンシューマ プラグインを展開するには、以下の手順を実行します。
- MessageConsumerPlugin Java ファイルをコンパイルします。このファイルには、以下の依存ライブラリが必要なります。それらのライブラリは、ポリシー サーバと共にインストールされています。installation_home\siteminder\bin\jars\SmJavaApi.jarSmJavaApi.jar の同一のコピーがSingle Sign-OnSDK と共にインストールされます。このファイルは、installation_home\sdk\Java\SmJavaApi.jar ディレクトリにあります。開発時にそれらのいずれも使用できます。
- フォルダまたは jar ファイルで、プラグイン クラスが利用可能な場合には、JVMOptions.txt ファイル内の -Djava.class.path 値を変更します。この手順により、変更したクラスパスを使用してプラグイン クラスがロードできるようになります。installation_home\siteminder\config ディレクトリの JVMOptions.txt ファイルの場所を特定します。注: 既存の xerces.jar、xalan.jar、SmJavaApi.jar のクラスパスを変更しないでください。
- MessageConsumerPlugin の最新のバージョンを取得するためのポリシー サーバの再起動 この手順は、プラグイン Java ファイルが再コンパイルされるごとに必要です。
- プラグインを有効化します。
SAML 1.x のメッセージ コンシューマ プラグインの有効化
メッセージ コンシューマ プラグインを作成してコンパイルした後に、管理 UI 内で設定することにより、このプラグインを有効にします。UI 設定により、
Single Sign-On
がプラグインの場所を認識できます。
プラグインを展開するまで、プラグイン設定を実行しないでください。
メッセージ コンシューマ プラグインを有効にする方法
- 管理 UI にログオンします
- 該当する SAML 1.x 方式の[認証方式]ダイアログ ボックスに移動します。[追加設定]セクションで、以下のフィールドに入力します。
- 完全 Java クラス名プラグインの Java クラス名を指定します。たとえば、Single Sign-OnSDK に含まれるサンプル クラスは次のとおりです。com.ca.messageconsumerplugin.MessageConsumerPluginSample
- パラメータ[完全 Java クラス名]フィールドで指定されたプラグインに渡されるパラメータ文字列を指定します。管理 UI でプラグインを設定する代わりに、ポリシー管理 API (C または Perl)を使用して、IdpPluginClass および IdpPluginParameters を設定します。
- ポリシー サーバを再起動します。