現在、既存のデータベースベースの認証をActiveDirectoryに移行しています。既存の実装では、パスワードはデータベースにクリアテキストで保持されます(これが悪いことはわかっています。これが移行の理由です)。ユーザーが(ブラウザーではなく)クライアント側アプリケーションにログインすると、アプリケーションはMD5ハッシュを使用してパスワードをハッシュし、サーバーに送信します。サーバーは、提供されたログインをデータベースに照会し、クリアテキストのパスワードをハッシュして、結果を比較します。
これはクライアント側のアプリケーションであるため、すべてのクライアントをアップグレードするには時間がかかります(数か月かかる場合があります)。そのため、クライアントが完全に移行されるまで、両方の認証方法をサポートしたいと考えています。
これを行う1つの方法は、1人のActiveDirectoryユーザーに2つのパスワード(実際のパスワードとパスワードのMD5ハッシュ)を持たせることです。どちらかが入ってくると、認証されます。
1人のユーザーがActiveDirectoryで複数のパスワードをサポートできますか?
たとえば、実際のユーザーJonSmithが2セットのログインパスワードを持つことができます。1。login= "jon"、password = "pass1" 2. login = "jon"、password = "pass2"
ジョンがログイン時にこれらのいずれかを渡すと、彼は正常に認証されます。
ありがとう
これに対する答えは基本的にいいえです。 ADは、ユーザーアカウントごとに1つのパスワードのみを許可します。 ADにはユーザー名と2000年より前のユーザー名があるため、1つのアカウントに2つのユーザー名をまとめることができると思いますが、それは良い考えではありません。これが必要な特別な理由はありますか?たぶんあなたのニーズに対するより良い解決策がありますか?
あなたがしたいのは、2つのソースに対して認証をチェックするようにクライアントを変更することです。
つまり、Active Directoryに移行している間は、既存のデータベースを保持してください。クライアントにADアカウントを確認してもらい、それが認証されない場合は、レガシー認証ソースを確認してもらいます。
ADに複数のユーザー名/パスワードを受け入れさせるために行う損害は、長い間対処するものになります。すべてが移行されるまで、並列認証ソースを実行するだけです。
複数のパスワードを持つことはできませんが、複数のUPN拡張機能を使用して複数のユーザー名を持つことができます。
つまり、ドメインcontoso.comの場合、ログインを取得できます:[email protected] [email protected] [email protected]
これらはすべて同じアカウントに関連付けられています。ただし、パスワードは1つしかありません。
なぜあなたがこれをする必要があるのか私にはよくわかりませんが、これを行う本当の方法がないという点でサムに同意します。
ユーザーをコピーしたり、ユーザーにまったく同じ権限を付与したり、同じメールボックスやリソースなどにアクセスしたりすることもできますが、1つのアカウントに複数のユーザー名を設定する方法がわかりません。
Active Directoryは、単一のセキュリティ識別子(SID)について説明している内容をサポートしていません。各SIDには、ユーザー名とパスワードの組み合わせを1つだけ含めることができます。
これは、「jon1」と「jon2」の両方がメンバーであるグループオブジェクトを作成し、「Jon Smith」に関連するすべてのアクセス許可(ファイルシステム、Exchangeメールボックスなど)でそのグループを使用することで、機能的に行うことができます。 (とにかく、ほぼすべてのアクセス許可にグループを使用する必要があります。)JonのユーザーアカウントのSIDの代わりに、使用されているグループのSIDを処理できないソフトウェアを使用していない限り、問題はありません。
これを行うには非常に醜い方法がありますが、なぜそうしたいのですか?
Active DirectoryユーザーIDは、実際には、実際の名前、セキュリティ識別子、またはSIDによってアカウントを識別するための簡単な方法にすぎません。各ユーザーオブジェクトには、ログオンに使用できるいくつかの属性が割り当てられています。samaccountname、ユーザープリンシパル名などです。これらの値は異なる可能性がありますが、パスワードは1つだけです。 「ユーザーとコンピューター」MMCコンソールを介してユーザーを「コピー」することができます。これにより、両方のユーザーアカウントが同じグループメンバーシップと一般的なデータを持つようになりますが、それでも2つあります。パスワードが異なる個別のユーザーオブジェクト。SIDが異なり、ADによって異なるユーザーと見なされますが、アカウントにまったく同じ表示名を付けることで、同じように見えるようにすることができます。
本当に、本当にADを壊したい場合は、SID-History属性を使用して、重複するSIDをディレクトリに挿入してみてください。これをやろうとしないことを強くお勧めします。実際、AD構造と低レベルのプログラミングに非常に精通していない限り、それを行うのは困難です。 Microsoft移行ツールは[〜#〜] not [〜#〜]これは一意の属性値であると想定されているため、重複したSIDをSID履歴に挿入できます。 MFCを使用して独自のアクセス方法を記述し、いくつかの組み込みのセーフガードをオーバーライドすれば、それが可能になると思います。しかし、これをしないでください。