Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een autorisatiebeleidsarchief bevat informatie over het beveiligingsbeleid van een toepassing of groep toepassingen. De informatie omvat de toepassingen, bewerkingen, taken, gebruikers en groepen gebruikers die aan de winkel zijn gekoppeld. Wanneer een toepassing die gebruikmaakt van Authorization Manager initialiseert, laadt het deze informatie uit de opslag. Het autorisatiebeleidsarchief moet zich op een vertrouwd systeem bevinden, omdat beheerders op dat systeem een hoge mate van toegang tot het archief hebben.
Autorisatiebeheer ondersteunt het opslaan van autorisatiebeleid in de Active Directory-adreslijstservice of in een XML-bestand, zoals wordt weergegeven in de volgende voorbeelden. In de Authorization Manager-API wordt een autorisatiebeleidsarchief vertegenwoordigd door een AzAuthorizationStore-object. In de voorbeelden ziet u hoe u een AzAuthorizationStore--object maakt voor een Active Directory-archief en een XML-archief.
- Een Active Directory Store- maken
- Een SQL Server Store- maken
- een XML Store- maken
Een Active Directory-opslag maken
Als u Active Directory wilt gebruiken om het autorisatiebeleid op te slaan, moet het domein zich op het functionele niveau van het Windows Server 2003 domein bevinden. Het autorisatiebeleidsarchief kan zich niet in een Context voor naamgeving buiten het domein bevinden (ook wel een toepassingspartitie genoemd). Het wordt aanbevolen dat het archief zich in de Program Data container bevindt onder een nieuwe organisatie-eenheid die specifiek is gemaakt voor het autorisatiebeleidsarchief. Het wordt ook aanbevolen dat de winkel zich in hetzelfde lokale netwerk bevindt als de toepassingsservers die de winkel gebruiken.
In het volgende voorbeeld ziet u hoe u een AzAuthorizationStore-object maakt dat een autorisatiebeleidsarchief vertegenwoordigt in Active Directory. In het voorbeeld wordt ervan uitgegaan dat er een bestaande Active Directory-organisatie-eenheid is met de naam Program Data in een domein met de naam authmanager.com.
#pragma comment(lib, "duser.lib")
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0502
#endif
#include <windows.h>
#include <stdio.h>
#include <azroles.h>
#include <objbase.h>
void main(void){
IAzAuthorizationStore* pStore = NULL;
HRESULT hr;
void MyHandleError(char *s);
BSTR storeName = NULL;
// Initialize COM.
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not initialize COM.");
// Create the AzAuthorizationStore object.
hr = CoCreateInstance(
/*"b2bcff59-a757-4b0b-a1bc-ea69981da69e"*/
__uuidof(AzAuthorizationStore),
NULL,
CLSCTX_ALL,
/*"edbd9ca9-9b82-4f6a-9e8b-98301e450f14"*/
__uuidof(IAzAuthorizationStore),
(void**)&pStore);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not create AzAuthorizationStore object.");
// Create a null VARIANT for function parameters.
VARIANT myVar;
VariantInit(&myVar);
// Allocate a string for the distinguished name of the
// Active Directory store.
if(!(storeName = SysAllocString
(L"msldap://CN=MyAzStore,CN=Program Data,DC=authmanager,DC=com")))
MyHandleError("Could not allocate string.");
// Initialize the store in Active Directory. Use the
// AZ_AZSTORE_FLAG_CREATE flag.
hr = pStore->Initialize(AZ_AZSTORE_FLAG_CREATE, storeName, myVar);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not initialize store.");
// Call the submit method to save changes to the new store.
hr = pStore->Submit(0, myVar);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not save data to the store.");
// Clean up resources.
pStore->Release();
VariantClear(&myVar);
SysFreeString(storeName);
CoUninitialize();
}
void MyHandleError(char *s)
{
printf("An error occurred in running the program.\n");
printf("%s\n",s);
printf("Error number %x\n.",GetLastError());
printf("Program terminating.\n");
exit(1);
}
Een SQL Server Store maken
Autorisatiebeheer biedt ondersteuning voor het maken van een op Microsoft SQL Server gebaseerd autorisatiebeleidsarchief. Als u een autorisatiearchief op basis van SQL Server wilt maken, gebruikt u een URL die begint met het voorvoegsel MSSQL://. De URL moet een geldige SQL-verbindingsreeks, een databasenaam en de naam van het autorisatiebeleidsarchief bevatten: **MSSQL://ConnectionString/DatabaseName/**PolicyStoreName.
Als het exemplaar van SQL Server niet de opgegeven Authorization Manager-database bevat, maakt Authorization Manager een nieuwe database met die naam.
Notitie
Verbindingen met een SQL Server-archief worden niet versleuteld, tenzij u EXPLICIET SQL-versleuteling instelt voor de verbinding of versleuteling instelt van het netwerkverkeer dat gebruikmaakt van Internet Protocol Security (IPsec).
In het volgende voorbeeld ziet u hoe u een AzAuthorizationStore-object maakt dat een autorisatiebeleidsarchief vertegenwoordigt in een SQL Server-database.
#pragma comment(lib, "duser.lib")
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0502
#endif
#include <windows.h>
#include <stdio.h>
#include <azroles.h>
#include <objbase.h>
void main(void){
IAzAuthorizationStore* pStore = NULL;
HRESULT hr;
void MyHandleError(char *s);
BSTR storeName = NULL;
// Initialize COM.
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not initialize COM.");
// Create the AzAuthorizationStore object.
hr = CoCreateInstance(
/*"b2bcff59-a757-4b0b-a1bc-ea69981da69e"*/
__uuidof(AzAuthorizationStore),
NULL,
CLSCTX_ALL,
/*"edbd9ca9-9b82-4f6a-9e8b-98301e450f14"*/
__uuidof(IAzAuthorizationStore),
(void**)&pStore);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not create AzAuthorizationStore object.");
VARIANT myVar;
myVar.vt = VT_NULL;
// Allocate a string for the SQL Server store.
if(!(storeName = SysAllocString
(L"MSSQL://Driver={SQL Server};Server={AzServer};/AzDB/MyStore")))
MyHandleError("Could not allocate string.");
// Initialize the store. Use the
// AZ_AZSTORE_FLAG_CREATE flag.
hr = pStore->Initialize(AZ_AZSTORE_FLAG_CREATE, storeName, myVar);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not initialize store.");
// Call the submit method to save changes to the new store.
hr = pStore->Submit(0, myVar);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not save data to the store.");
// Clean up resources.
pStore->Release();
SysFreeString(storeName);
CoUninitialize();
}
void MyHandleError(char *s)
{
printf("An error occurred in running the program.\n");
printf("%s\n",s);
printf("Error number %x\n.",GetLastError());
printf("Program terminating.\n");
exit(1);
}
Een XML-opslagplaats maken
Authorization Manager ondersteunt het maken van een autorisatiebeleidsarchief in XML-indeling. Het XML-archief kan zich bevinden op dezelfde computer waarop de toepassing wordt uitgevoerd, of kan extern worden opgeslagen. Het rechtstreeks bewerken van het XML-bestand wordt niet ondersteund. Gebruik de MMC-module Authorization Manager of de Authorization Manager-API om de beleidsopslag te bewerken.
Autorisatiebeheer biedt geen ondersteuning voor het delegeren van het beheer van een XML-beleidsarchief. Zie Het definiƫren van machtigingen delegeren in C++voor meer informatie over delegatie.
In het volgende voorbeeld ziet u hoe u een AzAuthorizationStore-object maakt dat een autorisatiebeleidsarchief in een XML-bestand vertegenwoordigt.
#pragma comment(lib, "duser.lib")
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0502
#endif
#include <windows.h>
#include <stdio.h>
#include <azroles.h>
#include <objbase.h>
void main(void){
IAzAuthorizationStore* pStore = NULL;
HRESULT hr;
void MyHandleError(char *s);
BSTR storeName = NULL;
// Initialize COM.
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not initialize COM.");
// Create the AzAuthorizationStore object.
hr = CoCreateInstance(
/*"b2bcff59-a757-4b0b-a1bc-ea69981da69e"*/
__uuidof(AzAuthorizationStore),
NULL,
CLSCTX_ALL,
/*"edbd9ca9-9b82-4f6a-9e8b-98301e450f14"*/
__uuidof(IAzAuthorizationStore),
(void**)&pStore);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not create AzAuthorizationStore object.");
VARIANT myVar;
myVar.vt = VT_NULL;
// Allocate a string for the distinguished name of the XML store.
if(!(storeName = SysAllocString(L"msxml://C:\\MyStore.xml")))
MyHandleError("Could not allocate string.");
// Initialize the store in an XML file. Use the
// AZ_AZSTORE_FLAG_CREATE flag.
hr = pStore->Initialize(AZ_AZSTORE_FLAG_CREATE, storeName, myVar);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not initialize store.");
// Call the submit method to save changes to the new store.
hr = pStore->Submit(0, myVar);
if (!(SUCCEEDED(hr)))
MyHandleError("Could not save data to the store.");
// Clean up resources.
pStore->Release();
SysFreeString(storeName);
CoUninitialize();
}
void MyHandleError(char *s)
{
printf("An error occurred in running the program.\n");
printf("%s\n",s);
printf("Error number %x\n.",GetLastError());
printf("Program terminating.\n");
exit(1);
}