Sto provando a determinare a livello di codice se l'utente corrente ha determinate autorizzazioni su un determinato oggetto Active Directory (in questo caso, sto provando a determinare se l'utente ha il permesso "Invia come" per un altro utente o distribuzione di Exchange lista oggetto).Come si interrogano le autorizzazioni effettive su un oggetto Active Directory?
Ho già capito come accedere all'attributo ntSecurityDescriptor
utilizzando ADSI: È possibile enumerare gli ACE nella proprietà DiscretionaryACL
di IADsSecurityDescriptor
. Ma:
- Come determinare da tali dati se la conferma "Invia come" è esplicitamente consentita o negata per un trustee?
- Come faccio a scoprirlo quando il permesso è stato concesso indirettamente tramite l'appartenenza al gruppo? Devo davvero analizzare personalmente le autorizzazioni effettive controllando (ricorsivamente) tutti i gruppi di cui l'utente è membro? Sicuramente ci deve essere un'API per questo compito ...
FWIW, sto codifica in Delphi (cioè il codice nativo Win32) utilizzando il TypeLibrary Activeds.dll, le soluzioni in modo da NET-specifici saranno in realtà non aiutano molto a meno che il loro codice sorgente non mi dia indizi su come fare la stessa cosa nel codice nativo. Lo stesso vale per PowerShell.
Prima che qualcuno inizia: so già circa le proprietà MAPI estesa PR_EMS_AB_PUBLIC_DELEGATES
e PR_EMS_AB_PUBLIC_DELEGATES_BL_O
. Tuttavia, questo non è quello che sto cercando. Queste proprietà si riferiscono al permesso "Invia per conto di" (a.k.a. delegati), non al permesso "Invia come", che è una cosa piuttosto diversa.
@RRUZ: Grazie per il passaggio, ma preferisco mantenere il delphi-tag fuori da questo, soprattutto perché alcune delle persone in grado di rispondere a questo potrebbe persino averlo nella loro lista di ignorare. Mi aspetto che la soluzione finale sia ugualmente applicabile a qualsiasi linguaggio di programmazione che possa utilizzare COM. –
Domanda di follow-up specifica per Delphi qui: http://stackoverflow.com/q/8524507/9784 –