WS-フェデレーション用メッセージ コンシューマ プラグインによるアサーション処理のカスタマイズ

目次
casso11jp
目次
2
casso11jp
メッセージ コンシューマ プラグインは、メッセージ コンシューマ プラグインを実装する 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 つを使用できます。
プラグインを設定する方法
  1. Single Sign-On
    SDK をインストールします(未インストールの場合)。
  2. MessageconsumerPlugin.java インターフェースを実装します(
    Single Sign-On
    SDK に含まれています)。
  3. メッセージ コンシューマ プラグイン実装クラスを展開します。
  4. 管理 UI でメッセージ コンシューマ プラグインを有効にします。
MessageConsumerPlugin インターフェースの実装
casso11jp
MessageConsumerPlugin.java インターフェースを実装するにより、カスタム メッセージ コンシューマ プラグインを作成します。実装クラスの最小要件は、以下の手順に示されています。
以下の手順に従います。
  1. パラメータが含まれない公のデフォルト コンストラクタ メソッドを提供します。
  2. 実装がステートレスになるように、コードを提供します。多数のスレッドが 1 つのプラグイン クラスを使用できる必要があります。
  3. 現実の要件に応じて、インターフェース内のメソッドを実装します。
    MessageConsumerPlugin には、以下の 4 つのメソッドが含まれています。
    • init()
      プラグインが必要とするあらゆる初期化手順を実行します。プラグインがロードされると、
      Single Sign-On
      は各プラグイン インスタンスに対してこのメソッドを 1 回コールします。
    • release()
      プラグインが必要とするあらゆる要約手順を実行します。
      Single Sign-On
      がシャットダウンしているとき、
      Single 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)
メッセージ コンシューマ プラグインの展開
casso11jp
MessageConsumerPlugin インターフェースの実装クラスをコード化した後、それをコンパイルし、
Single Sign-On
が実行可能ファイルを認識できることを確認します。
メッセージ コンシューマ プラグインを展開するには、以下の手順を実行します。
  1. MessageConsumerPlugin Java ファイルをコンパイルします。このファイルには、以下の依存ライブラリが必要なります。それらのライブラリは、ポリシー サーバと共にインストールされています。
    installation_home
    \siteminder\bin\jars\SmJavaApi.jar
    SmJavaApi.jar の同一のコピーが
    Single Sign-On
    SDK と共にインストールされます。このファイルは、
    installation_home
    \sdk\Java\SmJavaApi.jar ディレクトリにあります。
    開発時にそれらのいずれも使用できます。
  2. フォルダまたは jar ファイルで、プラグイン クラスが利用可能な場合には、JVMOptions.txt ファイル内の -Djava.class.path 値を変更します。この手順により、変更したクラスパスを使用してプラグイン クラスがロードできるようになります。
    installation_home
    \siteminder\config ディレクトリの JVMOptions.txt ファイルの場所を特定します。
    : 既存の xerces.jar、xalan.jar、SmJavaApi.jar のクラスパスを変更しないでください。
  3. MessageConsumerPlugin の最新のバージョンを取得するためのポリシー サーバの再起動 この手順は、プラグイン Java ファイルが再コンパイルされるごとに必要です。
  4. プラグインを有効化します。
WS フェデレーションでのメッセージ コンシューマ プラグインの有効化
メッセージ コンシューマ プラグインを作成してコンパイルした後に、管理 UI 内で設定することにより、このプラグインを有効にします。UI 設定により、
Single Sign-On
がプラグインの場所を認識できます。
プラグインを展開するまで、プラグイン設定を実行しないでください。
メッセージ コンシューマ プラグインを有効にする方法
  1. 管理 UI にログオンします。
  2. 該当する WS フェデレーション方式の[認証方式]ダイアログ ボックスに移動します。[一般]設定で、[詳細]セクションに移動し、以下のフィールドに入力します。
    • 完全 Java クラス名
      プラグインの Java クラス名を指定します。たとえば、
      Single Sign-On
      SDK に含まれるサンプル クラスは次のとおりです。
      com.ca.messageconsumerplugin.MessageConsumerPluginSample
    • パラメータ
      [完全 Java クラス名]フィールドで指定されたプラグインに渡されるパラメータ文字列を指定します。
      管理 UI でプラグインを設定する代わりに、ポリシー管理 API (C または Perl)を使用して、IdpPluginClass および IdpPluginParameters を設定します。
  3. ポリシー サーバを再起動します。