In einem neuen Projekt plane ich, ActiveDirectoryMembershipProvider und SqlRoleProvider zu verwenden, um Authentifizierung bzw. Autorisierung bereitzustellen.ActiveDirectoryMembershipProvider und SqlRoleProvider: Wartung?
Eine Sache, die mir nicht klar ist, ist, wie die Wartung gehandhabt wird - wenn Benutzer, die angemeldet sind und Rollen zugewiesen wurden aus Active Directory entfernt werden, wie verwaiste Datensätze in der Mapping-Tabelle von SqlRoleProvider? Ich glaube, das ist die Tabelle aspnet_UsersInRoles.
Man könnte Active Directory in regelmäßigen Abständen nach deaktivierten Benutzern abfragen und dann durch diese Liste, die Roles.RemoveUserFromRoles aufruft (UserId, Roles.GetRolesForUser (UserId)), wo sich UserId ebenfalls in aspnet_UsersInRoles befindet. Sehr langsam, würde ich mir vorstellen, für eine große Organisation.
Alternativ können Sie für jede distaint-Benutzer-ID in UsersInRoles ActiveDirectory abfragen und sicherstellen, dass die Bitmaske des Attributs userAccountControl nicht angibt, dass das Konto deaktiviert ist. Auch sehr ineffizient für eine große Anzahl von Anwendungsbenutzern.
Ein noch hässlicherer, aber viel effizienterer Ansatz wäre es, das letzte Anmeldedatum zu speichern und Rollenzuordnungen für Benutzer, die sich beispielsweise seit sechs Monaten nicht eingeloggt haben, regelmäßig zu löschen. Dies könnte Kopfschmerzen verursachen.
Ich würde gerne Vorschläge hören.