MembershipProviderを介した切断されたWPFアプリケーションでのActiveDirectoryユーザーの認証とGetRoles
-
11-07-2019 - |
質問
リモート/切断されたWPFアプリケーションでActiveDirectoryに対して認証する必要があるプロジェクト要件があります。
これを行うにはおそらくいくつかの方法がありますが、ActiveDirectoryのMembershipProviderを使用する最良の方法は何ですか?
する必要がある:
- ユーザーが存在することを認証します。
- ADユーザーのグループとロールを取得します。
これは、Active Directoryが存在するネットワークの外部にあるリモートの場所で発生する必要があります。
解決
WinFormsまたはWPFアプリケーション内から" クライアントを利用できるようになりましたアプリケーションサービス" (MSに非常に一般的な名前を提供してくれたことに感謝します。ヘルプの検索は非常に苦痛です!)。
これにより、ログインを検証できるWCFサービスに接続できます。上記のリンクには、すべてを簡単に機能させるためのウォークスルーがあります。機能するアプリを作成したら、別のMembershipProviderやRoleProviderを指すように設定を変更できます。
既定のソリューションには、 ActiveDirectoryMembershipProvider ですが、Active Directory用のRoleProviderはありません。
ロール(またはグループ)を取得する機能が必要であり、.NET 4.0で作業している場合は、新しいActive Directory APIを利用して、すべてをより簡単にします。つまり、 System.DirectoryServices.AccountManagement 。最も基本的なMembershipおよびRoleサービスの場合、独自の基本的なMembershipProviderおよびRoleProviderを作成するには、次のものが必要です。
- MembershipProvider.ValidateUser()-を使用する必要がありますPrincipalContext.ValidateCredentials()
- RoleProvider.GetAllRoles()-新しい PrincipalSearcher()
- RoleProvider.IsUserInrole()- UserPrincipal を使用しますa>。 FindByIdentity()メソッドを使用してユーザーを取得するには、 GroupPrincipal 。 FindByIdentity()でグループを取得し、 IsMemberOf()メソッドを使用して、グループのメンバーかどうかを確認します。
必要に応じて、APIの実装量を少なくすることも多くすることもできます。これを行うには、新しいAccountManagement名前空間で必要なものをすべて見つける必要があります。