4 Stimmen

Einfache Anmeldung mit Benutzernamen und Mitgliedschaftsanbieter in Active Directory

Ich verwende Active Directory für die Authentifizierung über ActiveDirectoryMembershipProvider in einem meiner ASP.Net-Projekte.

Ich stelle mit dieser LDAP-Verbindungszeichenfolge erfolgreich eine Verbindung her:

LDAP://server/DC=mydomain,DC=com

aber es bleiben zwei Fragen offen:

  1. aufrufen Membership.GetUser("moravej") gibt Null zurück, während der Aufruf von Membership.GetUser("moravej@mydomain.com") ein korrektes Objekt erhalten. Gibt es eine Möglichkeit, dieses Problem zu lösen? Ich möchte nicht, dass die Benutzer ihren vollständigen Namen verwenden müssen, wenn AD für sie transparent ist. Außerdem möchte ich meine Codes nicht ändern, um zu verketten @mydomain.com zu den eingegebenen Werten (wegen der vielen Änderungen, die ich brauche)

  2. Ich möchte, dass die Mitgliedschaft in der Lage ist, alle AD-Benutzer für die Anmeldung zu verwenden. (in diesem Fall tut sie es), aber ich möchte, dass alle Benutzer, die von meiner Anwendung erstellt werden, in eine CRM-OU gelangen. Wenn ich die Verbindungszeichenfolge auf LDAP://server/OU=CRM,DC=mydomain,DC=com gibt er null zurück, wenn ich Membership.GetUser() für Benutzer, die nicht zu dieser OE gehören.

Gibt es eine Möglichkeit, diese Probleme zu lösen?

Vielen Dank im Voraus

5voto

marc_s Punkte 701497

Laut dieser Seite hier können Sie festlegen, dass die SAMAccountName für Ihre Anmeldung - mit etwas Konfiguration:

Die Standardkonfiguration für den ActiveDirectoryMembershipProvider verwendet User Principal Names (UPNs) für die Namenszuordnung, wie sie in der Datei folgenden Beispiel gezeigt wird.

attributeMapUsername="userPrincipalName"

Aus diesem Grund müssen alle Benutzernamen das Format Benutzername@Domänenname haben, zum Beispiel: mary@testdomain.com oder steve@testdomain.com.

Aber Sie können das ändern - siehe den folgenden Absatz:

Sie können die Namenszuordnung so ändern, dass sie das einfache Benutzernamenformat verwendet, indem Sie das folgende Attribut in Konfiguration in der Datei Web.config setzen.

attributeMapUsername="sAMAccountName"

Mit dieser Konfiguration können Sie z. B. einfache Benutzernamen verwenden: Maria oder Steve.

Das scheint das zu sein, wonach Sie suchen - richtig?

Also in Ihrem web.config sollten Sie einen Konfigurationseintrag wie den folgenden haben (natürlich - verwenden Sie Ihr Namen der Verbindungszeichenfolgen usw. - dies ist nur ein Beispiel!)

<system.web>
<membership defaultProvider="MyADMembershipProvider">
   <providers>
      <add name="MyADMembershipProvider"
           type="System.Web.Security.ActiveDirectoryMembershipProvider,
                 System.Web, Version=2.0.0.0, Culture=neutral,
                 PublicKeyToken=b03f5f7f11d50a3a"
           connectionStringName="ADConnectionString"
           attributeMapUsername="sAMAccountName"/>  <== this is the magic to turn ON
  </providers>
</membership>
</system.web>

Zu Problem Nr. 2: Wenn Sie alle Benutzer, dann setzen Sie Ihre Verbindungszeichenfolge für den Mitgliedschaftsanbieter auf LDAP://server/DC=mydomain,DC=com so dass er sich mit dem Domänenstamm Ihrer AD-Domäne verbindet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X