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 Eintrag überhaupt benötigt?

Was muss ich ändern? ( und der Eintrag überhaupt erforderlich? )

  <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>
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top