ASP.NET Mitgliedschaft - Welche Roleprovider zu verwenden, so User.IsInRole () überprüft ActiveDirectory- Gruppen?
-
21-08-2019 - |
Frage
Sehr einfache Frage eigentlich:
Im Moment habe ich IIS anonymen Zugriff deaktiviert ist, können Benutzer mit ihren Login-Fenster automatisch protokolliert werden. Allerdings ruft User.IsInRole ( „Rollenname“) gibt false zurück. Ich doppelt geprüft User.Identity.Name () und den „Rollenname“ und es sollte true zurück.
Ich habe diese Zeit in meinem Web.config:
UPDATE
Ich rufe User.IsInRole ( "Rollenname"), wo ich soll User.IsInRole nennen ( "DOMAIN \ Rollenname")
Jedoch möchte ich noch wissen, ob die
Was muss ich ändern? ( und der
<authentication mode="Windows">
<forms
name=".ADAuthCookie"
timeout="10" />
</authentication>
<membership defaultProvider="ADMembershipProvider">
<providers>
<clear/>
<add
name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
connectionUsername="XXX\specialAdUser"
connectionPassword="xx"
/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="WindowsProvider">
<providers>
<clear />
<add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
Lösung
Wenn Sie Windows-Authentifizierung verwenden IsInRole wird ohne zusätzliche Konfiguration arbeiten, so lange wie Sie sich erinnern, die Rolle mit dem Domain-Präfix, das heißt DOMAIN \ Gruppenname.
Darüber hinaus können Sie Rolle (Wortspiel beabsichtigt), um Ihre eigene und verwenden Sie Windows Auth gegen, zum Beispiel eines SQL Role Provider, wo Sie Ihre AD nicht mit benutzerdefinierten Rollen für Ihre Anwendung übersät wollen.
Also nein, Sie überhaupt die Provider-Konfiguration nicht benötigen.
Andere Tipps
Der Mitgliedschaftsanbieter hier ist nicht zu helfen. Die ActiveDirectoryMembershipProvider scheinen am besten zu (nur?) Mit Formularauthentifizierung passen.
BlogEngine.NET hat einen Active Directory Rollenanbieter .
Ziemlich sicher, dass das einzige, was Sie dort brauchen, ist die Gruppe rolemanager (zusammen mit dem Basis authentication mode = ‚Fenster‘ Einstellung)
Aus dem Kasten heraus, gibt es keine Rollenanbieter direkt Active Directory zu verwenden. Sie können die Rolle Tabelle in dem ASP.NET-Mitglieds- und Rollensystem verwenden, oder Sie können Autorisierungs-Manager (AzMan) verwenden.
Es gibt einen Artikel über Codeproject , die die Umsetzung eines Rollenanbieter zeigt das funktioniert gegen den Active Directory - mit vollständigem Quellcode. Vielleicht hilft?
Marc