Active Directoryをユーザーストアとして使用している場合、データベース内の情報を特定のユーザーに関連付けるにはどうすればよいですか?それらを認証した後にデータベースに挿入する必要がありますか(これは私には冗長に思えます)、または認証にのみ広告メンバーシッププロバイダーを使用しており、SQLメンバーシッププロバイダーを使用する必要がありますか?
1 に答える
メンバーシッププロバイダーは、認証のみに関心があります。承認(認証と同じものではありません)は、ロジックによって、オプションでロールプロバイダーを使用して実行されます。
役割にActiveDirectoryを使用できますが、ASP.NETにはすぐに使用できるものが1つ含まれていないため、外部実装を使用する必要があります(例: http: //www.codeproject.com/Articles/28546/Active -Directory-Roles-Provider)。
メンバーシップにADを使用しているが、データベース内のユーザーを追跡する場合は、ADユーザーの属性を使用する必要があります。これは、ADユーザーのobjectGUID
属性が一意で不変であるためです。他のプロパティは、およびのようcn
にobjectSid
一意ですが不変ではありません。
個人的には、私が取り組んでいるASP.NETプロジェクトでメンバーシップ/ロール/プロファイル機能を使用していません。これらの機能には特別な処理が必要であり、アプリケーション内の他のすべてと常に一致するとは限らない、論理的に分離した関心事がアプリケーションに作成されるためです。エンティティにORMを使用している場合。アプリケーションの内部エンティティモデルの複雑さを回避するために独自のプロバイダーを実装した場合でも、Membership
オブジェクトがモデルへの新しいインターフェイスを公開するため、ユーザー管理のために既存のシステムの上に実装する必要があるため、問題が発生します。したがって、超基本的なWebサイトにはメンバーシップ/ロール/プロファイルのみを使用することをお勧めします。