Windows Server 2016 以降の LDAP ディレクトリに格納されているユーザーを認証するように AD FS を構成する

次のトピックでは、ライトウェイト ディレクトリ アクセス プロトコル (LDAP) v3 準拠のディレクトリに ID が格納されているユーザーを AD FS インフラストラクチャで認証できるようにするために必要な構成について説明します。

多くの組織の ID 管理ソリューションは、Active Directory、AD LDS、またはサードパーティ LDAP ディレクトリの組み合わせで構成されています。 LDAP v3 準拠のディレクトリに格納されているユーザーを認証するための AD FS サポートを追加すると、ユーザー ID が格納されている場所に関係なく、エンタープライズ レベルの AD FS 機能セット全体を活用できます。 AD FS では、すべての LDAP v3 準拠のディレクトリがサポートされます。

Note

AD FS の機能には、シングル サインオン (SSO)、デバイス認証、柔軟な条件付きアクセス ポリシー、Web アプリケーション プロキシとの統合によるどこからでも作業できる体制のサポート、および Microsoft Entra とのシームレスなフェデレーションがあります。シームレスなフェデレーションでは、その結果お客様とそのユーザーは Office 365 やその他の SaaS アプリケーションなどのクラウドを利用できるようになります。 詳細については、「Active Directory フェデレーション サービスの概要」を参照してください。

AD FS で LDAP ディレクトリのユーザーを認証できるようにするには、ローカル要求プロバイダー信頼を作成して、この LDAP ディレクトリを AD FS ファームに接続する必要があります。 ローカル要求プロバイダー信頼は、AD FS ファーム内の LDAP ディレクトリを表す信頼オブジェクトです。 ローカル要求プロバイダー信頼オブジェクトは、ローカル フェデレーション サービスに対してこの LDAP ディレクトリを識別する各種の識別子、名前、および規則で構成されています。

複数のローカル要求プロバイダー信頼を追加することにより、同じ AD FS ファーム内で、それぞれが独自の構成を持つ複数の LDAP ディレクトリをサポートできます。 また、AD FS が存在するフォレストによって信頼されていない AD DS フォレストは、ローカル要求プロバイダー信頼としてモデル化することもできます。 Windows PowerShell を使用して、ローカル要求プロバイダー信頼を作成できます。

LDAP ディレクトリ (ローカル要求プロバイダー信頼) は、同じ AD FS ファーム内の同じ AD FS サーバー上の AD ディレクトリ (要求プロバイダー信頼) と共存できます。そのため、AD FS の 1 つのインスタンスで、AD と非 AD の両方のディレクトリに格納されているユーザーの認証と承認を行うことができます。

LDAP ディレクトリのユーザーの認証では、フォームベースの認証のみがサポートされています。 LDAP ディレクトリのユーザーの認証では、証明書ベースおよび統合 Windows 認証はサポートされていません。

SAML、WS-Federation、および OAuth を含む、AD FS でサポートされているすべてのパッシブ認証プロトコルは、LDAP ディレクトリに格納されている ID でもサポートされています。

WS-Trust アクティブ承認プロトコルは、LDAP ディレクトリに格納されている ID でもサポートされています。

LDAP ディレクトリに格納されているユーザーを認証するように AD FS を構成する

LDAP ディレクトリのユーザーを認証するように AD FS ファームを構成する場合は、次の手順を行うことができます。

  1. まず、New-AdfsLdapServerConnection コマンドレットを使用して、LDAP ディレクトリへの接続を構成します。

    $DirectoryCred = Get-Credential
    $vendorDirectory = New-AdfsLdapServerConnection -HostName dirserver -Port 50000 -SslMode None -AuthenticationMethod Basic -Credential $DirectoryCred
    

    注意

    接続先の LDAP サーバーごとに新しい接続オブジェクトを作成することをお勧めします。 AD FS は、複数のレプリカ LDAP サーバーに接続し、特定の LDAP サーバーがダウンした場合に自動的にフェールオーバーすることができます。 このような場合は、これらのレプリカ LDAP サーバーごとに 1 つの AdfsLdapServerConnection を作成してから、Add-AdfsLocalClaimsProviderTrust コマンドレットの -LdapServerConnection パラメーターを使用して接続オブジェクトの配列を追加できます。

    注: Get-Credential を使用し、LDAP インスタンスにバインドするために使用する DN とパスワードを入力しようとすると、特定の入力形式 (たとえば、domain\username や user@domain.tld など) のユーザー インターフェイス要件によってエラーが発生する可能性があります。 代わりに、次のように ConvertTo-SecureString コマンドレットを使用することができます (以下の例では、LDAP インスタンスへのバインドに使用する資格情報の DN として uid=admin,ou=system を想定しています)。

    $ldapuser = ConvertTo-SecureString -string "uid=admin,ou=system" -asplaintext -force
    $DirectoryCred = Get-Credential -username $ldapuser -Message "Enter the credentials to bind to the LDAP instance:"
    

    その後、uid=admin のパスワードを入力し、残りの手順を行います。

  2. 次に、New-AdfsLdapAttributeToClaimMapping コマンドレットを使用して、既存の AD FS 要求に LDAP 属性をマッピングするオプションの手順を行うことができます。 以下の例では、givenName、Surname、および CommonName LDAP 属性を AD FS 要求にマップします。

    #Map given name claim
    $GivenName = New-AdfsLdapAttributeToClaimMapping -LdapAttribute givenName -ClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
    # Map surname claim
    $Surname = New-AdfsLdapAttributeToClaimMapping -LdapAttribute sn -ClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"
    # Map common name claim
    $CommonName = New-AdfsLdapAttributeToClaimMapping -LdapAttribute cn -ClaimType "http://schemas.xmlsoap.org/claims/CommonName"
    

    このマッピングは、AD FS で条件付きアクセス制御規則を作成するために、LDAP ストアの属性を AD FS の要求として使用できるようにするために行われます。 また、LDAP 属性を要求にマップする簡単な方法を提供することで、LDAP ストア内のカスタム スキーマを AD FS で使用することもできます。

  3. 最後に、Add-AdfsLocalClaimsProviderTrust コマンドレットを使用して、LDAP ストアをローカル要求プロバイダー信頼として AD FS に登録する必要があります。

    Add-AdfsLocalClaimsProviderTrust -Name "Vendors" -Identifier "urn:vendors" -Type Ldap
    
    # Connection info
    -LdapServerConnection $vendorDirectory
    
    # How to locate user objects in directory
    -UserObjectClass inetOrgPerson -UserContainer "CN=VendorsContainer,CN=VendorsPartition" -LdapAuthenticationMethod Basic
    
    # Claims for authenticated users
    -AnchorClaimLdapAttribute mail -AnchorClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" -LdapAttributeToClaimMapping @($GivenName, $Surname, $CommonName)
    
    # General claims provider properties
    -AcceptanceTransformRules "c:[Type != ''] => issue(claim=c);" -Enabled $true
    
    # Optional - supply user name suffix if you want to use Ws-Trust
    -OrganizationalAccountSuffix "vendors.contoso.com"
    

    上記の例では、"Vendors" というローカル要求プロバイダー信頼を作成しています。 -LdapServerConnection パラメーターに $vendorDirectory を割り当てることによって、このローカル要求プロバイダー信頼が表す LDAP ディレクトリに AD FS を接続するための接続情報を指定します。 手順 1 では、特定の LDAP ディレクトリに接続するときに使用する接続文字列 $vendorDirectory を割り当てたことに注意してください。 最後に、$GivenName$Surname、および $CommonName LDAP 属性 (AD FS 要求にマップしたもの) を、条件付きアクセス制御 (多要素認証ポリシーと発行承認規則を含む) と、AD FS 発行のセキュリティ トークンの要求による発行に使用するように指定します。 AD FS で Ws-Trust のようなアクティブなプロトコルを使用するには、OrganizationalAccountSuffix パラメーターを指定する必要があります。これにより、アクティブな承認要求を処理するときに、AD FS でローカル要求プロバイダー信頼を明確にすることができます。

参照

AD FS の運用