アサーティング パーティでクレーム変換を設定する方法

クレーム変換では、連携したシングル サインオン トランザクションの際にクレームを操作します。クレームは属性とも呼ばれ、属性のカスタマイズおよびパートナーでのユーザ操作性の向上を支援します。
casso126jjp
クレーム変換では、連携したシングル サインオン トランザクションの際にクレームを操作します。クレームは属性とも呼ばれ、属性のカスタマイズおよびパートナーでのユーザ操作性の向上を支援します。
注:
このビデオでは、製品名を CA SiteMinder と呼んでいますが、これは CA Single Sign-On (CA SSO)の旧称です。

目次
2
アサーション属性を変更すると、依存パーティがユーザ情報に対応し、ターゲット アプリケーションでユーザ情報を使用できるようになります。たとえば、クレーム変換によって別のドメインにある別のパートナーでロールを関連付けることができます。あるドメインで、ユーザはエンジニアリング マネージャであり、EngineerAdmins という名前のグループに属しているとします。ただし、依存パーティは同じロールを DevelAdmins と識別します。アサーティング パーティは、アサーションを発行する前にロール属性を変更します。この時点で、このユーザは依存パーティのアプリケーションで認識できる DevelAdmins ロールで識別されるようになります。
クレーム変換は、アサーションの作成時にローカルのアサーティング パーティで行われます。この機能はパートナーシップ単位で設定します。ローカル パーティまたはリモート パーティのどちらでアサーションを生成するかを変更できます。クレームは、パートナーシップに対して設定する式に基づいて変換されます。この式は、ユーザ ストアおよび セッション ストアからのユーザ情報に依存します。
ソフトウェアでは、アサーション属性に対して以下の 3 つの変更を実行できます。
  • 変換:
    アサーション属性の値を別の値に変更します。
  • 追加:
    アサーション属性が存在しない場合に、アサーション属性を追加します。
  • 削除:
    条件に基づいてアサーション属性を削除します。
クレーム変換の前提条件
クレーム変換を設定する前に、以下の前提条件を確認してください。
  • 使用可能なユーザ ストア属性およびセッション ストア属性に精通している必要があります。
  • 依存パーティがアサーションで受信する属性を特定する。
  • Unified Expression Language のオープン ソース バージョンである Java Unified Expression Language (JUEL)を理解している。
属性式のガイドラインについての説明
式はソフトウェアにアサーション属性を操作する方法を指示するためのルールです。式は、アサーション属性の変更、追加、削除をソフトウェアに指示します。式は Java Unified Expression Language (JUEL)を使用して作成します。JUEL 式エバリュエータは設定された式を確認し、結果としてアサーション属性を生成します。
管理 UI の[アサーション属性]テーブルで式を定義します。このテーブルを表示するには、パートナーシップ ウィザードの[アサーションの設定]手順に移動します。このテーブルを以下の図に示します。
assertion attribute configuration in the UI
アサーション属性テーブルの[値]列に式を入力します。式内の属性はすべて、ユーザ ストア属性またはセッション ストア属性です。
通常、式は、条件に基づいて作動します。条件が満たされた場合は、指定されたクレームの変更が行われます。たとえば、受信アサーションには「ロール」属性が含まれます。「role」アサーション属性を変更する式は以下のとおりです。
#{attr["title"] == 'manager' ? 'administrator' : attr["title"]}
#{attr["title"] == 'manager'
の最初の部分では、ログインされたユーザーの役職が「マネージャ」であるかどうかを特定するようにソフトウェアに指示します。ユーザ ディレクトリで検索が行われます。この条件が満たされる場合、式の2 番目の部分、
? 'administrator' :
で role アサーション属性に値「administrator」を割り当てます。この条件が満たされなかった場合は、式の最後の部分の
attr["title"]}
で、ユーザ属性「title」の値を「manager」のままにします。この値「manager」はアサーション属性「role」に割り当てられます。
注:
attr["title"] という構文の代わりに静的な値を使用することもできます。前の例における 'administrator' が静的な値です。
この例では、「role」属性がすでにアサーションにあると仮定しています。そのため、この式は既存の属性の変換です。「role」がアサーションの一部でない場合、ソフトウェアは role 属性をアサーションに追加します。
式の構文
式は適切な構文を使用して作成します。
  • ユーザ ストア属性は文字列
    attr
    ["
    attribute_name
    "] で表します。
  • セッション ストア属性は文字列
    session_attr
    ["
    attribute_name
    "] で表します。
  • クレームの削除には引数「DELETE」を使用します。
attr
および
session_attr
プレフィックスには、小文字を使用します。属性名では、大文字と小文字は区別されません。
また、以下の JUEL の条件付き演算子に注意してください。
オペレータ
意味
条件値 ? value1 : value2
条件値は value1 または value2 のいずれかに対応します。
!=
等しくない
==
等しい
重要:
式に含まれる属性は、ユーザ ディレクトリまたはセッション ストアで使用可能である必要があります。属性が正しくないと、システムによって対応する属性として空白が挿入されます。アサーションの生成は失敗しません。
式の例については、「アサーティング パーティでのクレーム変換の設定」を参照してください。
アサーティング パーティでのクレーム変換の設定
パートナーシップ レベルで式を定義します。これらの式の結果により、アサーションの属性が変更、追加、削除されます。ルールが定義されたら、アサーションが変更され、依存パーティに送信されます。クレーム変換を設定しない場合は、アサーション属性が依存パーティにそのまま渡されます。
以下の手順に従います。
  1. 管理 UI にログインします。
  2. [Federation]-[パートナーシップ]を選択します。
  3. 変更するパートナーシップを選択します。選択できるパートナーシップには以下のものがあります。
    • ローカル プロデューサからリモート コンシューマ
    • ローカル IdP からリモート SP
    • ローカル IP からリモート RP
  4. パートナーシップ ウィザードの[アサーションの設定]手順に移動します。
    [アサーション属性]セクションで、[行の追加]をクリックします。
  5. 行の以下のフィールドに特に注意してください。各フィールドの詳細な説明については、[ヘルプ]をクリックしてください。
    • アサーション属性
      アサーション属性を入力します。この列の値はすべてアサーション属性です。すでにアサーション内に存在する属性はアサーション内に残りますが、設定された式に基づいて新しい値に設定されます。DELETE 式を設定した場合のみ、属性はアサーションから削除されます。
    • 取得メソッド
      デフォルトの SSO のままにします。
    • Format
      アサーションに追加される属性用の形式を指定します。フォーマット オプションはエンティティの SAML プロファイルによって異なります。
    • Type
      クレーム変換には常にこの値を使用します。
    • アサーション属性に対する変更を反映する式を入力します。
      クレームの式の作成に関するガイドラインと以下の例を確認してください。
  6. (SAML 2.0 およびトークン タイプが SAML 2.0 の WSFED のオプション)。アサーション属性を暗号化するには、[暗号化]を選択します。アサーティング パーティは、パートナーシップ設定で指定された証明書を使用してアサーションを暗号化します。
    依存パーティは、証明書と関連付けられている秘密キーを使用してアサーション属性を復号化します。
  7. 設定するアサーション属性に対して行を必要なだけ追加します。
パートナーシップ内に設定されたエントリに基づいて、クレーム変換が実装されます。
アサーションのクレーム変換
クレーム変換によって、アサーション属性の値が別の値に変更されます。
注:
以下の例では、アサーション属性、タイプ、および値のエントリのみを示しています。
変換例 1
以下の例では、アサーションに「title」属性があると仮定しています。この表はユーザ ストアのユーザ属性を示しています。
ユーザ ディレクトリ属性
属性値
ロール
admin
admintitle
SeniorAdmin
supertitle
SuperUser
以下の設定を使用して、既存の役職属性の値を変換します。
  • アサーション属性
    title
  • Type
  • #{attr[“role”] == ‘admin’ ? attr[“admintitle”] : attr[“supertitle”]}
結果:
この式は、「role」ユーザ属性が「admin」と設定されているという条件を表しています。この条件が満たされた場合、アサーション属性「title」には「admintitle」属性の SeniorAdmin という値が設定されます。ロールが「admin」以外である場合は、「title」属性は「supertitle」属性の値である SuperUser になります。
変換例 2
以下の例では、アサーションに ContactNo 属性があると仮定しています。
ユーザ ディレクトリ属性
属性値
homephone
555-3344
mobile
555-8888
以下の設定を使用して、既存の役職属性の値を変換します。
  • アサーション属性
    ContactNo
  • Type
  • #{attr["homephone"] == '555-3344' ? attr["mobile"] : attr["homephone"]}
結果:
この式は、ログイン ユーザの「homephone」ユーザ属性が 555-3344 に設定されているという条件を表しています。この条件が満たされた場合、アサーション属性は「mobile」属性の値である 555-8888 に設定されます。条件が満たされない場合、「homephone」の値は変更されません。
casso126jjp
 
 
セッション属性を使用する式を設定するには、attr["
attribute_name
"] を session_attr["
attribute_name
"] に置き換えます。例:
#{session_attr[“att1”] == ‘admin’ ? session_attr[“attr2”] : attr[“attr3”]}
アサーションへのクレームの追加
アサーション属性がまだ存在しない場合に、アサーション属性を追加することができます。
追加例 1
以下の例は、アサーション属性「役職」がアサーションに
ない
と仮定しています。
ユーザ ディレクトリ属性
属性値
ロール
admin
admintitle
director
supertitle
executive
以下の設定では title 属性をアサーションに追加します。
  • アサーション属性
    title
  • Type
  • #{attr[“role”] == ‘admin’ ? attr[“admintitle”] : attr[“supertitle”]}
結果:
この式は、ログイン ユーザの「role」属性が admin に設定されているという条件を表しています。この条件が満たされた場合、アサーション属性「title」がアサーションに追加され、その値は「admintitle」属性の値である「director」に設定されます。role が「admin」以外である場合は、アサーション属性「title」が追加されますが、その値は「supertitle」属性の値である「executive」になります。
追加例 2
以下の例は、アサーション属性「smtitle」がアサーションに
ない
と仮定しています。
ユーザ ディレクトリ属性
属性値
title
manager
  • アサーション属性
    smtitle
  • Type
  • #{attr["title"] == 'manager' ? 'federation administrator' : attr["title"]}
結果:
ログイン ユーザの title が「manager」である場合は、「smtitle」がアサーションに追加され、その値が「federation administrator」に設定されます。疑問符の後ろには、構文 attr["attribute_name"] を使用する代わりに静的な値を入力することもできます。この例では、静的な値は federation administrator です。
casso126jjp
 
 
セッション属性を使用する式を設定するには、attr["
attribute_name
"] を session_attr["
attribute_name
"] に置き換えます。例:
#{session_attr[“att1”] == ‘admin’ ? session_attr[“attr2”] : attr[“attr3”]}
アサーションからのクレームの削除
アサーション属性を削除できます。
削除例 1
2 つのエントリを設定して、admintitle および supertitle アサーション属性を削除します。
ユーザ ディレクトリ属性
属性値
ロール
admin または superuser
title
管理者
su
superuser
  • アサーション属性
    admintitle
  • Type
  • #{attr[“role”] == ‘superuser’ ? ‘DELETE’ : attr[“title”]}
結果:
この式は、「role」ユーザ属性に基づく条件です。ログイン ユーザのロールが superuser の場合は、アサーション属性「admintitle」を削除します。ロールが superuser でない場合は、タイトル アサーション属性を、タイトル ユーザ ディレクトリ属性の値である、値「administrator」に設定します。
  • アサーション属性
    supertitle
  • Type
  • #{attr[“role”] == ‘admin’ ? ‘DELETE’ : attr[“su”]}
結果:
この式は、「role」ユーザ属性に基づく条件です。ログイン ユーザ ロールが "admin" である場合は、アサーション属性 "supertitle" を削除します。ロールが "admin" でない場合は、supertitle アサーション属性を su ユーザ ディレクトリ属性の値である、値「superuser」に設定します。
削除例 2
以下の例では、1 つの式に追加と削除を組み合わせています。
ユーザ ディレクトリ属性
属性値
title
manager
  • アサーション属性
    ManagerName
  • Type
  • #{attr["title"] != 'Manager' ? attr["manager"] : 'DELETE'}
結果:
ログイン ユーザのユーザ属性 title が「manager」で
ない
場合、ManagerName 属性をアサーションに追加します。ただし、ログイン ユーザの title が manager である場合は、ManagerName がアサーションの一部であると想定して、ManagerName 属性を削除します。
casso126jjp
 
 
セッション属性を使用する式を設定するには、attr["
attribute_name
"] を session_attr["
attribute_name
"] に置き換えます。例:
#{session_attr[“att1”] == ‘admin’ ? session_attr[“attr2”] : attr[“attr3”]}