当社には、フォレスト全体のUPNサフィックスcompany.com
が存在し、ほとんどすべてのユーザーアカウントで明示的なUPNが[email protected]
に設定されています。この値は、ActiveDirectoryのuserPrincipalName
属性でも設定されます。
これで、ユーザーがKerberosを介して認証を実行するアプリケーションができました。したがって、Kerberosプリンシパル、つまり暗黙的なUPNが与えられます。そのユーザーを検索して、いくつかのLDAP属性を取得したいと思います。 iUPNとuserPrincipalName
が一致しなくなったため、ルックアップはできません。
Active Direcoryからマッピングを取得する「公式」の方法はありますか?私の回避策は、レルムコンポーネントに対してLDAPバインドを実行し、iUPNのユーザーIDコンポーネントに一致するsAMAccountName
属性を検索することです。値はドメイン内でのみ一意であるため、フォレスト内の単なるsAMAccountName
を検索することはできません。
これを行う方法は、sAMAccountNameとuserPrincipalNameの両方に対してLDAPクエリを実行することです。例:(&(sAMAccountName = uname)(userPrincipalName = * @ example.com))は、ユーザー[email protected]のsAMAccountName(「暗黙のUPNプレフィックス」)がunameである場合、ユーザーをクエリします。
adfind のようなプログラムを使用すると、ADに対してこのような任意のLDAPクエリを実行できます。
オーバーライドされたためにドメインと一致するUPNサフィックスに依存できない場合は、各ドメインのSID部分(最後の部分を除くユーザーのSIDのすべての部分)のリストを作成して、それ。ドメインexample.netのSID部分が1234-5678-9012の場合、ドメイン内のすべてのユーザーは、S-1-5-21-1234-5678-9012-で始まるSIDを持ちます。そのマッピングがある場合は、LDAP検索を作成できます
( &(sAMAccountName=uname)(objectSID=S-1-5-21-1234-5678-9012-*) )