次の方法で共有


要求規則として LDAP 属性を送信する場合

属性ストアに存在する実際のライトウェイト ディレクトリ アクセス プロトコル (LDAP) 属性値を含む送信要求を発行し、要求の種類を各 LDAP 属性に関連付ける場合は、Active Directory フェデレーション サービス (AD FS) でこの規則を使用できます。 属性ストアの詳細については、「属性ストア の役割」を参照してください。

このルールを使用する場合は、次の表に示すように、指定した LDAP 属性ごとに要求を発行し、ルール ロジックに一致します。

ルール オプション ルール ロジック
LDAP 属性と送信要求の種類のマッピング 属性ストアが 指定された属性ストア と等しく、LDAP 属性が 指定した値と等しい場合は、LDAP 属性値を 指定された出力方向の要求 の種類にマップし、要求を発行します。

次のセクションでは、要求規則の基本的な概要について説明します。 また、LDAP 属性を要求として送信ルールを使用するタイミングに関する詳細も提供します。

要求規則について

要求規則は、受信要求を受け取り、条件を適用し (x の場合は y の場合)、条件パラメーターに基づいて送信要求を生成するビジネス ロジックのインスタンスを表します。 次の一覧では、このトピックの詳細を読む前に要求規則について知っておくべき重要なヒントの概要を示します。

  • AD FS 管理スナップインでは、要求規則は要求規則テンプレートを使用してのみ作成できます

  • 要求規則は、要求プロバイダー (Active Directory や別のフェデレーション サービスなど) から直接、または要求プロバイダー信頼に対する受け入れ変換規則の出力から受信要求を処理します。

  • 要求規則は、特定の規則セット内の時系列の順序で要求発行エンジンによって処理されます。 ルールに優先順位を設定することで、特定のルール セット内の以前のルールによって生成された要求をさらに絞り込んだり、フィルター処理したりできます。

  • 要求規則テンプレートでは、常に受信要求の種類を指定する必要があります。 ただし、1 つの規則を使用して、同じ要求の種類を持つ複数の要求値を処理できます。

要求規則と要求規則セットの詳細については、「要求規則 の役割」を参照してください。 ルールの処理方法の詳細については、「 要求エンジンの役割」を参照してください。 要求規則セットの処理方法の詳細については、「要求パイプラインの役割」を参照してください。

LDAP 属性と送信要求の種類のマッピング

要求として LDAP 属性を送信ルール テンプレートを使用する場合は、Active Directory や Active Directory Domain Services (AD DS) などの LDAP 属性ストアから属性を選択して、値をクレームとして証明書利用者に送信できます。 これは基本的に、定義した属性ストアの特定の LDAP 属性を、承認に使用できる一連の送信要求にマップします。

このテンプレートを使用すると、1 つのルールから複数の要求として送信される複数の属性を追加できます。 たとえば、このルール テンプレートを使用して、 会社部門 の Active Directory 属性から認証されたユーザーの属性値を検索し、これらの値を 2 つの異なる送信要求として送信するルールを作成できます。

このルールを使用して、すべてのユーザーのグループ メンバーシップを送信することもできます。 個々のグループ メンバーシップのみを送信する場合は、グループ メンバーシップの送信を要求規則テンプレートとして使用します。 詳細については、「 送信グループ メンバーシップを要求規則として使用する場合」を参照してください

このルールを作成する方法

この規則を作成するには、要求規則言語を使用するか、AD FS 管理スナップインの要求規則テンプレートとして LDAP 属性を送信します。 このルール テンプレートには、次の構成オプションが用意されています。

  • 要求規則名を指定する

  • LDAP 属性の抽出元となる属性ストアを選択する

  • LDAP 属性と送信要求の種類のマッピング

このルールを作成する方法の詳細については、「 LDAP 属性を要求として送信するルールを作成する」を参照してください。

要求規則言語の使用

Active Directory、AD DS、または Active Directory Lightweight Directory Services (AD LDS) に対するクエリを samAccountname 以外の LDAP 属性と比較する必要がある場合は、代わりにカスタム 規則を使用する必要があります。 入力セットに Windows アカウント名要求がない場合は、カスタム規則を使用して、AD DS または AD LDS のクエリに使用する要求を指定する必要もあります。

次の例は、要求規則言語を使用して属性ストア内のデータのクエリと抽出を行うカスタム規則を構築するさまざまな方法を理解するのに役立ちます。

例: AD LDS 属性ストアに対してクエリを実行し、指定した値を返す方法

パラメーターはセミコロンで区切る必要があります。 最初のパラメーターは LDAP フィルターです。 後続のパラメーターは、一致するオブジェクトで返される属性です。

次の例は、 sAMAccountName 属性でユーザーを検索し、ユーザーのメール属性の値を使用して電子メール アドレス要求を発行する方法を示しています。

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail", param = regexreplace(c.Value, "(?<___domain>[^\\]+)\\(?<user>.+)", "${user}"));

次の例は、ユーザーのタイトル属性と表示名属性の値を使用して、メール属性でユーザーを検索し、タイトルと表示名の要求を発行する方法を示しています。

c:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress ", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "mail={0};title;displayname", param = c.Value);

次の例は、メールとタイトルでユーザーを検索し、ユーザーの displayname 属性を使用して表示名要求を発行する方法を示しています。

c1:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"] && c2:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "(&(mail={0})(title={1}));displayname", param = c1.Value, param = c2.Value);

例: Active Directory 属性ストアにクエリを実行し、指定した値を返す方法

Active Directory 属性ストアが正しいドメインに対してクエリを実行できるように、Active Directory クエリには最終パラメーターとしてユーザーの名前 (ドメイン名を含む) を含める必要があります。 それ以外の場合は、同じ構文がサポートされます。

次の例は、ドメイン内の sAMAccountName 属性でユーザーを検索し、 メール 属性を返す方法を示しています。

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail;{1}", param = regexreplace(c.Value, "(?<___domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

例: 受信要求の値に基づいて Active Directory 属性ストアにクエリを実行する方法

c:[Type == "http://test/name"]

   => issue(store = "Enterprise AD Attribute Store",

         types = ("http://test/email"),

         query = ";mail;{0}",

         param = c.Value)

前のクエリは、次の 3 つの部分で構成されています。

  • LDAP フィルター - クエリのこの部分を指定して、属性に対してクエリを実行するオブジェクトを取得します。 有効な LDAP クエリに関する一般的な情報については、RFC 2254 を参照してください。 Active Directory 属性ストアにクエリを実行していて、LDAP フィルターを指定しない場合、samAccountName={0} クエリが想定され、Active Directory 属性ストアには、 {0}の値をフィードできるパラメーターが必要です。 そうしないと、クエリでエラーが発生します。 Active Directory 以外の LDAP 属性ストアの場合、クエリの LDAP フィルター部分を省略できないか、クエリでエラーが発生します。

  • 属性の指定 - クエリのこの 2 番目の部分では、フィルター処理されたオブジェクトから除外する属性 (複数の属性値を使用する場合はコンマ区切り) を指定します。 指定する属性の数は、クエリで定義する要求の種類の数と一致する必要があります。

  • Active Directory ドメイン - 属性ストアが Active Directory の場合にのみ、クエリの最後の部分を指定します。 (他の属性ストアにクエリを実行する場合は必要ありません)。クエリのこの部分は、フォーム ドメイン\name でユーザー アカウントを指定するために使用されます。 Active Directory 属性ストアは、ドメイン パーツを使用して、クエリに接続して実行し、属性を要求する適切なドメイン コントローラーを決定します。

例: 2 つのカスタム 規則を使用して、Active Directory の属性からマネージャーの電子メールを抽出する方法

次の 2 つのカスタムルールは、以下に示す順序で一緒に使用する場合、Active Directory にユーザー アカウントの マネージャー 属性を照会し (ルール 1)、その属性を使用して メール属性 ( ルール 2) のマネージャーのユーザー アカウントに対してクエリを実行します。 最後に、 メール 属性は "ManagerEmail" 要求として発行されます。 まとめると、ルール 1 は Active Directory にクエリを実行し、クエリの結果をルール 2 に渡し、マネージャーの電子メール値を抽出します。

たとえば、これらのルールの実行が完了すると、corp.fabrikam.com ドメイン内のユーザーのマネージャーの電子メール アドレスを含む要求が発行されます。

ルール 1

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> add(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"), query = "sAMAccountName=
{0};mail,userPrincipalName,extensionAttribute5,manager,department,extensionAttribute2,cn;{1}", param = regexreplace(c.Value, "(?
<___domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

ルール 2

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
&& c1:[Type == "http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerEmail"), query = "distinguishedName={0};mail;{1}", param = c1.Value,
param = regexreplace(c1.Value, ".*DC=(?<___domain>.+),DC=corp,DC=fabrikam,DC=com", "${___domain}\username"));

これらのルールは、ユーザーのマネージャーがユーザーと同じドメインにある場合にのみ機能します (この例では corp.fabrikam.com)。

その他のリファレンス

LDAP 属性を要求 として送信する規則を作成する