Metodo IEffectivePermission2::ComputeEffectivePermissionWithSecondarySecurity (aclui.h)
Il metodo ComputeEffectivePermissionWithSecondarySecurity calcola le autorizzazioni valide per un oggetto. Supporta l'integrazione di criteri di sicurezza secondari o personalizzati. È possibile scegliere di fornire queste informazioni di sicurezza aggiuntive implementando l'interfaccia ISecurityInformation4 . Questo metodo supporta l'identità composta, ovvero quando il token di accesso di un'entità contiene informazioni sull'autorizzazione dell'utente e del dispositivo.
Sintassi
HRESULT ComputeEffectivePermissionWithSecondarySecurity(
[in] PSID pSid,
[in, optional] PSID pDeviceSid,
[in, optional] PCWSTR pszServerName,
[in] PSECURITY_OBJECT pSecurityObjects,
[in] DWORD dwSecurityObjectCount,
[in, optional] PTOKEN_GROUPS pUserGroups,
[in, optional] PAUTHZ_SID_OPERATION pAuthzUserGroupsOperations,
[in, optional] PTOKEN_GROUPS pDeviceGroups,
[in, optional] PAUTHZ_SID_OPERATION pAuthzDeviceGroupsOperations,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pAuthzUserClaims,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTE_OPERATION pAuthzUserClaimsOperations,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pAuthzDeviceClaims,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTE_OPERATION pAuthzDeviceClaimsOperations,
[in, out] PEFFPERM_RESULT_LIST pEffpermResultLists
);
Parametri
[in] pSid
Puntatore a una struttura SID che rappresenta l'entità di sicurezza la cui autorizzazione effettiva viene determinata.
[in, optional] pDeviceSid
Puntatore a una struttura SID che rappresenta il dispositivo da cui l'entità accede all'oggetto. Se non è NULL e si usa la funzione AuthzAccessCheck per calcolare le autorizzazioni valide, il SID del dispositivo può essere composto con il parametro pSid usando la funzione AuthzInitializeCompoundContext .
[in, optional] pszServerName
Nome del server in cui risiede l'oggetto. Si tratta dello stesso nome restituito dal metodo ISecurityInformation::GetObjectInformation .
[in] pSecurityObjects
Matrice di oggetti di sicurezza. Questa matrice è costituita da oggetti dedotti dall'editor del controllo di accesso oltre a quelli restituiti dal metodo ISecurityInformation4::GetSecondarySecurity .
[in] dwSecurityObjectCount
Numero di oggetti di sicurezza nel parametro pSecurityObjects e numero di risultati elencati nel parametro pEffpermResultLists .
[in, optional] pUserGroups
Puntatore a gruppi di utenti aggiuntivi che devono essere usati per modificare il contesto di sicurezza inizializzato dal parametro pSid . Se si usa la funzione AuthzAccessCheck per calcolare le autorizzazioni valide, la modifica può essere eseguita chiamando la funzione AuthzModifySids usando AuthzContextInfoGroupsSids come parametro SidClass .
[in, optional] pAuthzUserGroupsOperations
Puntatore a una matrice di strutture AUTHZ_SID_OPERATION che specificano la modalità di modifica dei gruppi di utenti nel contesto authz per ogni gruppo di utenti nell'argomento pUserGroups . Questa matrice contiene tutti gli elementi del numero di gruppi nel parametro pUserGroups .
[in, optional] pDeviceGroups
Puntatore a gruppi di dispositivi aggiuntivi che devono essere usati per modificare il contesto di sicurezza inizializzato dal parametro pSid o uno creato combinando i contesti inizializzati dai parametri pSid e pDeviceSid . Se si usa la funzione AuthzAccessCheck per calcolare le autorizzazioni valide, la modifica può essere eseguita chiamando la funzione AuthzModifySids usando AuthzContextInfoDeviceSids come parametro SidClass .
[in, optional] pAuthzDeviceGroupsOperations
Puntatore a una matrice di AUTHZ_SID_OPERATION tipi di enumerazione che specificano come i gruppi di dispositivi nel contesto authz devono essere modificati per ogni gruppo di dispositivi nell'argomento pDeviceGroups . Questa matrice contiene tutti gli elementi del numero di gruppi nel parametro pDeviceGroups .
[in, optional] pAuthzUserClaims
Puntatore a una struttura AUTHZ_SECURITY_ATTRIBUTES_INFORMATION che contiene il contesto delle attestazioni utente da usare per modificare il contesto di sicurezza inizializzato dal parametro pSid . Se si usa la funzione AuthzAccessCheck per calcolare le autorizzazioni valide, la modifica può essere eseguita chiamando la funzione AuthzModifyClaims usando AuthzContextInfoUserClaims come parametro ClaimClass .
[in, optional] pAuthzUserClaimsOperations
Puntatore a un tipo di enumerazione AUTHZ_SECURITY_ATTRIBUTE_OPERATION che specifica le operazioni associate al contesto delle attestazioni utente.
[in, optional] pAuthzDeviceClaims
Puntatore al contesto delle attestazioni del dispositivo che deve essere usato per modificare il contesto di sicurezza inizializzato dal parametro pSid o uno creato combinando i contesti inizializzati dai parametri pSid e pDeviceSid . Questo può essere fornito dal chiamante, anche se il parametro pDeviceSid non è. Se si usa la funzione AuthzAccessCheck per calcolare le autorizzazioni valide, la modifica può essere eseguita chiamando la funzione AuthzModifyClaims usando AuthzContextInfoDeviceClaims come parametro ClaimClass .
[in, optional] pAuthzDeviceClaimsOperations
Puntatore a un tipo di enumerazione AUTHZ_SECURITY_ATTRIBUTE_OPERATION che specifica le operazioni associate al contesto delle attestazioni del dispositivo.
[in, out] pEffpermResultLists
Puntatore a una matrice dei risultati effettivi delle autorizzazioni di tipo EFFPERM_RESULT_LIST. Questa matrice è lunga gli elementi dwSecurityObjectCount . La matrice viene inizializzata dal chiamante e l'implementazione deve impostare tutti i campi di ogni membro nella matrice, indicando l'accesso concesso dall'oggetto di sicurezza corrispondente.
Se è stato considerato un oggetto di sicurezza, il membro fEvaluated deve essere impostato su TRUE. In questo caso, i membri pObjectTypeList e pGrantedAccessList devono essere entrambi elementi cObjectTypeListLength long. Il membro pObjectTypeList deve puntare alla memoria di proprietà del gestore risorse e deve rimanere valido fino all'uscita dalla funzione EditSecurity . Il membro pGrantedAccessList viene liberato dal chiamante usando la funzione LocalFree . Se resource manager non supporta gli ACL dell'oggetto, il membro pObjectTypeList deve puntare al GUID NULL , il membro cObjectTypeListLength deve essere 1 e il membro pGrantedAccessList deve essere un singolo DWORD.
Valore restituito
Se la funzione ha esito positivo, il valore restituito viene S_OK.
Se la funzione ha esito positivo ma ha restituito un risultato approssimativo, il valore restituito viene S_FALSE.
Se la funzione ha esito negativo, il valore restituito è un valore HRESULT che indica l'errore. Per un elenco dei codici di errore comuni, vedere Valori HRESULT comuni.
Commenti
Quando il membro Id la struttura SECURITY_OBJECT è impostata su SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE, il metodo ComputeEffectivePermissionWithSecondarySecurity deve usare prima il membro pData2 e quindi valutare l'accesso usando il membro pData .
Si prevede che il chiamante userà AuthzAccessCheck per determinare le autorizzazioni valide. Quando possibile, l'implementazione deve inizializzare un gestore risorse remoto nel membro pszServerName fornito, usando la funzione AuthzInitializeRemoteResourceManager per garantire che i gruppi e le attestazioni vengano inizializzati nello stesso modo in cui l'entità accede effettivamente all'oggetto. Se AuthzInitializeRemoteResourceManager ha esito negativo, l'implementazione potrebbe eseguire il fallback all'uso della funzione AuthzInitializeResourceManager e restituire S_FALSE per indicare che vengono restituiti risultati approssimativi.
Per ogni oggetto di sicurezza secondario il cui membro fEvaluated è impostato su TRUE, l'editor di controllo di accesso visualizzerà le autorizzazioni e le proprietà limitate da tale oggetto usando il membro pwszName .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 [solo app desktop] |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | aclui.h |
Vedi anche
AUTHZ_SECURITY_ATTRIBUTE_OPERATION
AuthzInitializeRemoteResourceManager