web-dev-qa-db-ja.com

Active Directoryに対する認証時に使用するフィールドはどれですか?

Active Directoryユーザーオブジェクトには、識別子と見なすことができるいくつかのフィールドが含まれています。以下に、ADUCでのラベルと属性名を含むこれらのリストをいくつか示します。

  • 氏名-cn
  • ? - 名前
  • ユーザーsAMAccountNameログオン-sAMAccountName
  • ユーザーUPNログオン:userPrincipalName
  • ? - 識別名

私は、ADに対して認証するカスタムコードを記述するときに、これらの1つだけを使用するように開発者に標準化を試みています。状況。上記のフィールドを使用する必要があるかどうかさえわかりません!

他の誰かが一貫して使用する1つを選んだことがありますか?その決定であなたに影響を与えたものは何ですか?問題を明確にする文書はありますか?

12
dunxd

CNだけではユーザーを一意に識別できないため、CN(共通名)はログインに適していません。私は

CN=Ryan Ries,OU=Dallas,DC=Domain,DC=com

そして私は

CN=Ryan Ries,OU=New York,DC=Domain,DC=com

ユーザーのCNもRDN(相対識別名)です。ユーザーのCNは同じですが、DNが異なります。組織内にRyan Riesという名前の2人がいて、2番目のSamAccountNameをrries2のようにする必要がある場合、問題が発生することに気付くでしょう。

DN(識別名)は、CN=ryan,OU=Texas,DC=brazzers,DC=comのようなユーザー名でシステムにログインしたいので、ログインに適していません。 DNを使用すると、ユーザーを一意かつ確実に識別できますが、入力するのが面倒です。これは、ファイルシステム上の相対パスと絶対パスの間の同じ種類の概念です。また、オブジェクトを検索することなく、オブジェクトがディレクトリ構造のどこにあるかを正確に把握していることも意味します。あなたはしばしばそうしません。

これは、あいまいな名前解決(ANR)と呼ばれ、ユーザーの識別名がない場合にユーザーのディレクトリを検索します。

UPN(ユーザープリンシパル名)は、電子メールアドレスのように見え、ユーザーの会社の電子メールアドレスと同じにすることができ、覚えやすく、名前で検索されるため、ログインすることをお勧めします。フォレスト内で検索する前に、まずローカルドメインで。

Microsoftは次のように述べています。UPNの目的は、電子メールとログオンの名前空間を統合して、ユーザーが覚える必要がある名前が1つだけになるようにすることです。 UPNは、Windowsユーザーの優先ログオン名です。ユーザーはUPNを使用してドメインにログオンする必要があります。ログオン時に、UPNはまずローカルドメインを検索し、次にグローバルカタログを検索することによって検証されます。ローカルドメインまたはGCでUPNが見つからない場合、UPNが拒否されます。ユーザーアカウントの作成時に、UPNを割り当てることができますが必須ではありません

アプリケーションを設計するときは、最後の「不要」ビットに注意してください。

SamAccountNameはドメイン内のすべてのユーザーに対して一意である必要があるため(フォレストではなく)、SamAccountNameも適しています。さらに、SamAccountNameは短いです。 ADフォレスト内であなたを一意に識別していなくても、ほとんどの人はSamAccountNamesでログインします。そのため、システムがログインしようとしているドメインをシステムが認識できるように、SamAccountNameに沿ってドメイン名を指定する必要があります。 。

これは、さらに読むための問題に関するいくつかの素晴らしいドキュメントです:

http://msdn.Microsoft.com/en-us/library/windows/desktop/ms677605(v = vs.85).aspx

http://msdn.Microsoft.com/en-us/library/windows/desktop/ms680857(v = vs.85).aspx

18
Ryan Ries

誰かがログインするために入力するものとしてユーザー名を参照している場合は、ドメイン名と組み合わせて一意になるsAMAccountNameまたは内部で一意になるuserPrincipalNameをお勧めします森。

ユーザー名が一意の識別子である限り、Windowsはすべてのアクセス制御エントリにSIDを使用し、ユーザー名からSIDに変換するための一連のメソッドを提供します。ドメイン内での名前の変更と移動は効果がありませんが、削除して再作成すると新しいSIDが生成されるため、SIDはアカウントの有効期間中のユーザーのメタファーと一致します。

そのために、ユーザー名を表す文字列を受け取り、LookupAccountNamesAMAccountName、およびドメイン名を返す SID を呼び出します。ユーザーが見つかったドメインの。

ユーザーはWindowsでサポートされている構文を使用してログインでき、追加のトレーニングは必要ありません。

4
Mitch

ユーザーが使用する名前の形式を選択し、アプリケーション側でユーザーの入力を決定できるようにすることをお勧めします。例:ユーザーが次のように入力した場合:[email protected]これをUPNと見なし、ADでUPNを検索します。ユーザーが次のように入力した場合:ユーザー名-定義済みのデフォルトドメインのsamAccountNameと見なします。もちろん、ユーザーがdomain\usernameと入力した場合は、指定したドメインのsamAccountNameと見なします。人は結婚し、ユーザー名が変更される可能性があるため、常にユーザーのSIDを取得し、SIDにすべての権限を割り当てます。

0
Stan