In un'applicazione net 3.5 csharp è necessario sapere in anticipo se una password di AD soddisferà i requisiti di complessità configurati.
Come puoi farlo?Come si può verificare se una password AD soddisfi i requisiti di complessità configurati?
11
A
risposta
3
Questi link possono puntare nella giusta direzione:
Change user password in ADS and check the domain password policy (C#)?
User Management with Active Directory—Managing Passwords for ADAM Users
Determining Domain-Wide Account Policies (questo sembra avere quello che ti serve)
3
Se si vuole prendere i requisiti da AD, quindi i link nella risposta di @Leniel Macaferi dovrebbero aiutare.
Se si conoscono già i requisiti previsti e l'app accetta la password proposta come stringa, è possibile effettuare autonomamente i test. Alcuni requisiti comuni e modi per calcolare le includono:
- Lunghezza minima: è facile controllare la lunghezza della stringa
- Complessità: requisiti comuni sarebbero "almeno tre da questa lista: in minuscolo , maiuscolo, numeri, caratteri ", quindi si desidera creare un contatore, quindi utilizzare un'espressione regolare per verificare se ciascuna condizione corrisponde e incrementare il contatore per ciascuna di esse. Quindi, ad esempio, le espressioni regolari saranno come
[a-z]
,[A-Z]
,[0-9]
,[[email protected]#$%^&*()-_\+=<,>\.\?\/]
; per ognuno che corrisponde, aggiungi 1 al tuo contatore. Se il conteggio alla fine è inferiore ai requisiti, la password non riesce. (Potresti anche essere più gentile con l'utente e suggerire una delle categorie che hanno mancato, se hai mantenuto le variabili booleane per le categorie che hanno usato e non hanno usato.) - Facile ipotesi: puoi creare la tua uguaglianza test per garantire che l'utente non stia selezionando una password che corrisponda al nome utente o ad altre password vietate.
- Password utilizzate di recente: Uhm, questo non è così semplice ... non si può davvero capirlo senza l'aiuto di Active Directory.
I due collegamenti a en.csharp-online.et sembrano essere interrotti. –
Gli ultimi due collegamenti non funzionano e il collegamento a soluzioni esterne non è una risposta adeguata su SO (che sono sicuro di conoscere ormai;)). –