Uwierzytelnianie w Centrum partnerskim
Dotyczy: Centrum partnerskie | Centrum partnerskie obsługiwane przez firmę 21Vianet | Centrum partnerskie dla chmury firmy Microsoft dla instytucji rządowych USA
Centrum partnerskie używa usługi Microsoft Entra ID do uwierzytelniania. Korzystając z interfejsu API Centrum partnerskiego, zestawu SDK lub modułu programu PowerShell, należy prawidłowo skonfigurować aplikację usługi Microsoft Entra, a następnie zażądać tokenu dostępu. Tokeny dostępu uzyskane przy użyciu tylko aplikacji lub aplikacji i uwierzytelniania użytkownika mogą być używane z Centrum partnerskim. Istnieją jednak dwa ważne elementy, które należy wziąć pod uwagę
Użyj uwierzytelniania wieloskładnikowego podczas uzyskiwania dostępu do interfejsu API Centrum partnerskiego przy użyciu uwierzytelniania aplikacji i użytkownika. Aby uzyskać więcej informacji na temat tej zmiany, zobacz Włączanie bezpiecznego modelu aplikacji.
Nie wszystkie operacje interfejsu API Centrum partnerskiego obsługują tylko uwierzytelnianie aplikacji. Istnieją pewne scenariusze, w których będzie wymagane użycie aplikacji i uwierzytelniania użytkownika. W nagłówku Wymagania wstępne dla każdego artykułu znajdziesz dokumentację, która określa, czy obsługiwane są tylko uwierzytelnianie aplikacji, aplikacja i uwierzytelnianie użytkownika.
Ważne
Usługa Azure Active Directory (Azure AD) Graph jest przestarzała od 30 czerwca 2023 r. W przyszłości nie dokonujemy dalszych inwestycji w usłudze Azure AD Graph. Interfejsy API programu Graph usługi Azure AD nie mają umowy SLA ani zobowiązania do konserwacji poza poprawkami związanymi z zabezpieczeniami. Inwestycje w nowe funkcje i funkcje zostaną dokonane tylko w programie Microsoft Graph.
Wycofamy program Azure AD Graph w krokach przyrostowych, aby mieć wystarczający czas na migrację aplikacji do interfejsów API programu Microsoft Graph. W późniejszym terminie ogłosimy, że zablokujemy tworzenie nowych aplikacji przy użyciu usługi Azure AD Graph.
Aby dowiedzieć się więcej, zobacz Ważne: wycofanie programu Azure AD Graph i wycofanie modułu powershell.
Konfiguracja początkowa
Aby rozpocząć, musisz upewnić się, że masz zarówno podstawowe konto Centrum partnerskiego, jak i konto centrum partnerskiego integracji. Aby uzyskać więcej informacji, zobacz Konfigurowanie kont Centrum partnerskiego na potrzeby dostępu do interfejsu API. Zanotuj identyfikator rejestracji aplikacji Microsoft Entra i wpis tajny (klucz tajny klienta jest wymagany do identyfikacji tylko aplikacji) zarówno dla konta podstawowego, jak i konta piaskownicy integracji.
Zaloguj się do witryny Microsoft Entra ID z witryny Azure Portal. W uprawnieniach do innych aplikacji ustaw uprawnienia dla usługi Windows Azure Active Directory na Uprawnienia delegowane, a następnie wybierz pozycję Dostęp do katalogu jako zalogowanego użytkownika i Zaloguj się i odczytaj profil użytkownika.
W witrynie Azure Portal dodaj aplikację. Wyszukaj ciąg "Microsoft Partner Center", czyli aplikację Centrum partnerskiego firmy Microsoft. Ustaw uprawnienia delegowane na dostęp do interfejsu API Centrum partnerskiego. Jeśli używasz Centrum partnerskiego dla chmury Firmy Microsoft dla instytucji rządowych USA, ten krok jest obowiązkowy. Jeśli używasz wystąpienia globalnego Centrum partnerskiego, ten krok jest opcjonalny. Partnerzy programu CSP mogą użyć funkcji zarządzania aplikacjami w Centrum partnerskim, aby pominąć ten krok dla wystąpienia globalnego Centrum partnerskiego.
Uwierzytelnianie tylko dla aplikacji
Jeśli chcesz użyć uwierzytelniania tylko do aplikacji w celu uzyskania dostępu do interfejsu API REST Centrum partnerskiego, interfejsu API platformy .NET, interfejsu API języka Java lub modułu programu PowerShell, możesz to zrobić, korzystając z poniższych instrukcji.
.NET (uwierzytelnianie tylko dla aplikacji)
public static IAggregatePartner GetPartnerCenterTokenUsingAppCredentials()
{
IPartnerCredentials partnerCredentials =
PartnerCredentials.Instance.GenerateByApplicationCredentials(
PartnerApplicationConfiguration.ApplicationId,
PartnerApplicationConfiguration.ApplicationSecret,
PartnerApplicationConfiguration.ApplicationDomain);
// Create operations instance with partnerCredentials.
return PartnerService.Instance.CreatePartnerOperations(partnerCredentials);
}
Java (uwierzytelnianie tylko dla aplikacji)
Zestaw SDK Java Centrum partnerskiego może służyć do zarządzania zasobami Centrum partnerskiego. Jest to projekt typu open source obsługiwany przez społeczność partnerów i nie jest oficjalnie obsługiwany przez firmę Microsoft. Jeśli wystąpi problem, możesz uzyskać pomoc od społeczności lub otworzyć problem w usłudze GitHub .
public IAggregatePartner getAppPartnerOperations()
{
IPartnerCredentials appCredentials =
PartnerCredentials.getInstance().generateByApplicationCredentials(
PartnerApplicationConfiguration.getApplicationId(),
PartnerApplicationConfiguration.getApplicationSecret(),
PartnerApplicationConfiguration.getApplicationDomain());
return PartnerService.getInstance().createPartnerOperations( appCredentials );
}
REST (uwierzytelnianie tylko dla aplikacji)
Żądanie REST
POST https://login.microsoftonline.com/{tenantId}/oauth2/token HTTP/1.1
Accept: application/json
return-client-request-id: true
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 194
Expect: 100-continue
resource=https%3A%2F%2Fgraph.windows.net&client_id={client-id-here}&client_secret={client-secret-here}&grant_type=client_credentials
Odpowiedź REST
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 1406
{"token_type":"Bearer","expires_in":"3600","ext_expires_in":"3600","expires_on":"1546469802","not_before":"1546465902","resource":"https://graph.windows.net","access_token":"value-has-been-removed"}
Uwierzytelnianie aplikacji i użytkownika
Model bezpiecznej aplikacji jest teraz używany do zapewnienia bezpiecznego, skalowalnego i przyszłego uwierzytelniania na potrzeby dostępu do interfejsu API Centrum partnerskiego. Takie podejście zwiększa bezpieczeństwo przy użyciu nowoczesnych mechanizmów uwierzytelniania, takich jak tokeny dostępu tylko do aplikacji i aplikacji i użytkowników za pośrednictwem usługi Azure AD. Aby uzyskać więcej informacji, zobacz Włączanie bezpiecznego modelu aplikacji.
Zgoda partnera
Proces zgody partnera to interaktywny proces, w którym partner uwierzytelnia się przy użyciu uwierzytelniania wieloskładnikowego, wyraża zgodę na aplikację, a token odświeżania jest przechowywany w bezpiecznym repozytorium, takim jak usługa Azure Key Vault. Zalecamy użycie dedykowanego konta do celów integracji w tym procesie.
Ważne
Odpowiednie rozwiązanie uwierzytelniania wieloskładnikowego powinno być włączone dla konta usługi używanego w procesie wyrażania zgody partnera. Jeśli tak nie jest, wynikowy token odświeżania nie będzie zgodny z wymaganiami dotyczącymi zabezpieczeń.
Przykłady dotyczące uwierzytelniania aplikacji i użytkownika
Proces wyrażania zgody partnera można wykonać na wiele sposobów. Aby pomóc partnerom zrozumieć, jak wykonać każdą wymaganą operację, opracowaliśmy następujące przykłady. Podczas implementowania odpowiedniego rozwiązania w środowisku ważne jest opracowanie rozwiązania zgodnego ze standardami kodowania i zasadami zabezpieczeń.
.NET (uwierzytelnianie aplikacji i użytkownika)
Przykładowy projekt zgody partnera pokazuje, jak korzystać z witryny internetowej opracowanej przy użyciu ASP.NET do przechwytywania zgody, żądania tokenu odświeżania i bezpiecznego przechowywania go w usłudze Azure Key Vault. Wykonaj poniższe kroki, aby utworzyć wymagane wymagania wstępne dla tego przykładu.
Utwórz wystąpienie usługi Azure Key Vault przy użyciu witryny Azure Portal lub następujących poleceń programu PowerShell. Przed wykonaniem polecenia należy odpowiednio zmodyfikować wartości parametrów. Nazwa magazynu musi być unikatowa.
Login-AzureRmAccount # Create a new resource group New-AzureRmResourceGroup -Name ContosoResourceGroup -Location EastUS New-AzureRmKeyVault -Name 'Contoso-Vault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East US'
Aby uzyskać więcej informacji na temat tworzenia usługi Azure Key Vault, zobacz Szybki start: ustawianie i pobieranie wpisu tajnego z usługi Azure Key Vault przy użyciu witryny Azure Portal lub przewodnika Szybki start: ustawianie i pobieranie wpisu tajnego z usługi Azure Key Vault przy użyciu programu PowerShell. Następnie ustaw i pobierz wpis tajny.
Utwórz aplikację Microsoft Entra i klucz przy użyciu witryny Azure Portal lub następujących poleceń.
Connect-MgGraph -Scopes "Application.ReadWrite.OwnedBy" $Context = Get-MgContext $app = New-MgApplication -DisplayName 'My Vault Access App' -Web @{ RedirectUris = 'https://$($Context.TenantId)/$((New-Guid).ToString())' } $password = Add-MgApplicationPassword -ApplicationId $app.AppId Write-Host "ApplicationId = $($app.AppId)" Write-Host "ApplicationSecret = $($password.SecretText)"
Pamiętaj, aby zanotować identyfikator aplikacji i wartości wpisów tajnych, ponieważ będą one używane w poniższych krokach.
Udziel nowo utworzonej aplikacji Microsoft Entra uprawnienia do odczytu wpisów tajnych przy użyciu witryny Azure Portal lub następujących poleceń.
# Connect to Microsoft Graph Connect-MgGraph -Scopes "User.Read" # Get the application $app = Get-MgApplication -Filter "appId eq 'ENTER-APP-ID-HERE'" # Set the Key Vault access policy Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.Id -PermissionsToSecrets get
Utwórz aplikację Firmy Microsoft Entra skonfigurowaną dla Centrum partnerskiego. Wykonaj następujące czynności, aby wykonać ten krok.
- Przejdź do funkcji zarządzania aplikacjami w Centrum partnerskim
- Wybierz pozycję Dodaj nową aplikację internetową, aby utworzyć nową aplikację firmy Microsoft Entra.
Pamiętaj, aby udokumentować wartości Identyfikator aplikacji, Identyfikator konta* i Klucz, ponieważ będą one używane w poniższych krokach.
Sklonuj repozytorium Partner-Center-DotNet-Samples przy użyciu programu Visual Studio lub następującego polecenia.
git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
Otwórz projekt PartnerConsent znajdujący się w
Partner-Center-DotNet-Samples\secure-app-model\keyvault
katalogu.Wypełnij ustawienia aplikacji znalezione w pliku web.config
<!-- AppID that represents CSP application --> <add key="ida:CSPApplicationId" value="" /> <!-- Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file. --> <add key="ida:CSPApplicationSecret" value="" /> <!-- Endpoint address for the instance of Azure KeyVault. This is the DNS Name for the instance of Key Vault that you provisioned. --> <add key="KeyVaultEndpoint" value="" /> <!-- App ID that is given access for KeyVault to store refresh tokens --> <add key="ida:KeyVaultClientId" value="" /> <!-- Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file. --> <add key="ida:KeyVaultClientSecret" value="" />
Ważne
Poufne informacje, takie jak wpisy tajne aplikacji, nie powinny być przechowywane w plikach konfiguracji. Zostało to zrobione tutaj, ponieważ jest to przykładowa aplikacja. W przypadku aplikacji produkcyjnej zdecydowanie zalecamy użycie uwierzytelniania opartego na certyfikatach. Aby uzyskać więcej informacji, zobacz Poświadczenia certyfikatu na potrzeby uwierzytelniania aplikacji.
Po uruchomieniu tego przykładowego projektu zostanie wyświetlony monit o uwierzytelnienie. Po pomyślnym uwierzytelnieniu token dostępu jest wymagany z poziomu identyfikatora Entra firmy Microsoft. Informacje zwrócone z identyfikatora Entra firmy Microsoft zawierają token odświeżania przechowywany w skonfigurowanym wystąpieniu usługi Azure Key Vault.
Java (uwierzytelnianie aplikacji i użytkownika)
Przykładowy projekt zgody partnera pokazuje, jak korzystać z witryny internetowej opracowanej przy użyciu programu JSP do przechwytywania zgody, żądania tokenu odświeżania i bezpiecznego magazynu w usłudze Azure Key Vault. Wykonaj następujące czynności, aby utworzyć wymagane wymagania wstępne dla tego przykładu.
Utwórz wystąpienie usługi Azure Key Vault przy użyciu witryny Azure Portal lub następujących poleceń programu PowerShell. Przed wykonaniem polecenia należy odpowiednio zmodyfikować wartości parametrów. Nazwa magazynu musi być unikatowa.
Login-AzureRmAccount # Create a new resource group New-AzureRmResourceGroup -Name ContosoResourceGroup -Location EastUS New-AzureRmKeyVault -Name 'Contoso-Vault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East US'
Aby uzyskać więcej informacji na temat tworzenia usługi Azure Key Vault, zobacz Szybki start: ustawianie i pobieranie wpisu tajnego z usługi Azure Key Vault przy użyciu witryny Azure Portal lub przewodnika Szybki start: ustawianie i pobieranie wpisu tajnego z usługi Azure Key Vault przy użyciu programu PowerShell.
Utwórz aplikację Microsoft Entra i klucz przy użyciu witryny Azure Portal lub następujących poleceń.
Connect-MgGraph -Scopes "Application.ReadWrite.OwnedBy" $Context = Get-MgContext $app = New-MgApplication -DisplayName 'My Vault Access App' -IdentifierUri 'https://$($Context.TenantDomain)/$((New-Guid).ToString())' $password = Add-MgApplicationPassword -ApplicationId $app.AppId Write-Host "ApplicationId = $($app.AppId)" Write-Host "ApplicationSecret = $($password.SecretText)"
Pamiętaj, aby udokumentować identyfikator aplikacji i wartości wpisów tajnych, ponieważ będą one używane w poniższych krokach.
Udziel nowo utworzonej aplikacji Microsoft Entra uprawnienia do odczytu wpisów tajnych przy użyciu witryny Azure Portal lub następujących poleceń.
Connect-MgGraph -Scopes "User.Read" $app = Get-MgApplication -Filter "appId eq 'ENTER-APP-ID-HERE'" Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.Id -PermissionsToSecrets get
Utwórz aplikację Firmy Microsoft Entra skonfigurowaną dla Centrum partnerskiego. Wykonaj następujące czynności, aby wykonać ten krok.
- Przejdź do funkcji zarządzania aplikacjami w Centrum partnerskim
- Wybierz pozycję Dodaj nową aplikację internetową, aby utworzyć nową aplikację firmy Microsoft Entra.
Pamiętaj, aby udokumentować wartości Identyfikator aplikacji, Identyfikator konta* i Klucz, ponieważ będą one używane w poniższych krokach.
Sklonuj repozytorium Partner-Center-Java-Samples przy użyciu następującego polecenia
git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
Otwórz projekt PartnerConsent znajdujący się w
Partner-Center-Java-Samples\secure-app-model\keyvault
katalogu.Wypełnij ustawienia aplikacji znalezione w pliku web.xml
<filter> <filter-name>AuthenticationFilter</filter-name> <filter-class>com.microsoft.store.samples.partnerconsent.security.AuthenticationFilter</filter-class> <init-param> <param-name>client_id</param-name> <param-value></param-value> </init-param> <init-param> <param-name>client_secret</param-name> <param-value></param-value> </init-param> <init-param> <param-name>keyvault_base_url</param-name> <param-value></param-value> </init-param> <init-param> <param-name>keyvault_client_id</param-name> <param-value></param-value> </init-param> <init-param> <param-name>keyvault_client_secret</param-name> <param-value></param-value> </init-param> <init-param> <param-name>keyvault_certifcate_path</param-name> <param-value></param-value> </init-param> </filter>
Ważne
Poufne informacje, takie jak wpisy tajne aplikacji, nie powinny być przechowywane w plikach konfiguracji. Zostało to zrobione tutaj, ponieważ jest to przykładowa aplikacja. W przypadku aplikacji produkcyjnej zdecydowanie zalecamy użycie uwierzytelniania opartego na certyfikatach. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie certyfikatu usługi Key Vault.
Po uruchomieniu tego przykładowego projektu zostanie wyświetlony monit o uwierzytelnienie. Po pomyślnym uwierzytelnieniu token dostępu jest wymagany z poziomu identyfikatora Entra firmy Microsoft. Informacje zwrócone z identyfikatora Entra firmy Microsoft zawierają token odświeżania przechowywany w skonfigurowanym wystąpieniu usługi Azure Key Vault.
Uwierzytelnianie Dostawca rozwiązań w chmurze
Dostawca rozwiązań w chmurze partnerzy mogą używać tokenu odświeżania uzyskanego za pośrednictwem procesu zgody partnera.
Przykłady uwierzytelniania Dostawca rozwiązań w chmurze
Aby pomóc partnerom zrozumieć, jak wykonać każdą wymaganą operację, opracowaliśmy następujące przykłady. Podczas implementowania odpowiedniego rozwiązania w środowisku ważne jest opracowanie rozwiązania zgodnego ze standardami kodowania i zasadami zabezpieczeń.
.NET (uwierzytelnianie CSP)
Jeśli jeszcze tego nie zrobiono, wykonaj proces wyrażania zgody partnera.
Sklonuj repozytorium Partner-Center-DotNet-Samples przy użyciu programu Visual Studio lub następującego polecenia
git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
CSPApplication
Otwórz projekt znajdujący się wPartner-Center-DotNet-Samples\secure-app-model\keyvault
katalogu.Zaktualizuj ustawienia aplikacji znalezione w pliku App.config .
<!-- AppID that represents CSP application --> <add key="ida:CSPApplicationId" value="" /> <!-- Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file. --> <add key="ida:CSPApplicationSecret" value="" /> <!-- Endpoint address for the instance of Azure KeyVault --> <add key="KeyVaultEndpoint" value="" /> <!-- AppID that is given access for keyvault to store the refresh tokens --> <add key="ida:KeyVaultClientId" value="" /> <!-- Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file. --> <add key="ida:KeyVaultClientSecret" value="" />
Ustaw odpowiednie wartości dla zmiennych PartnerId i CustomerId znalezionych w pliku Program.cs .
// The following properties indicate which partner and customer context the calls are going to be made. string PartnerId = "<Partner tenant id>"; string CustomerId = "<Customer tenant id>";
Po uruchomieniu tego przykładowego projektu uzyskuje token odświeżania uzyskany podczas procesu wyrażania zgody partnera. Następnie żąda tokenu dostępu w celu interakcji z zestawem SDK Centrum partnerskiego w imieniu partnera. Na koniec żąda tokenu dostępu w celu interakcji z programem Microsoft Graph w imieniu określonego klienta.
Java (uwierzytelnianie CSP)
Jeśli jeszcze tego nie zrobiono, wykonaj proces wyrażania zgody partnera.
Sklonuj repozytorium Partner-Center-Java-Samples przy użyciu programu Visual Studio lub następującego polecenia
git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
cspsample
Otwórz projekt znajdujący się wPartner-Center-Java-Samples\secure-app-model\keyvault
katalogu.Zaktualizuj ustawienia aplikacji znalezione w pliku application.properties .
azuread.authority=https://login.microsoftonline.com keyvault.baseurl= keyvault.clientId= keyvault.clientSecret= partnercenter.accountId= partnercenter.clientId= partnercenter.clientSecret=
Po uruchomieniu tego przykładowego projektu uzyskuje token odświeżania uzyskany podczas procesu wyrażania zgody partnera. Następnie żąda tokenu dostępu w celu interakcji z zestawem SDK Centrum partnerskiego w imieniu partnera.
Opcjonalnie — usuń komentarz z wywołań funkcji RunAzureTask i RunGraphTask , jeśli chcesz zobaczyć, jak korzystać z usług Azure Resource Manager i Microsoft Graph w imieniu klienta.
Uwierzytelnianie dostawcy Panel sterowania
Dostawcy panelu sterowania muszą mieć każdego partnera, który obsługuje, wykonuje proces wyrażania zgody partnera. Po zakończeniu tego procesu token odświeżania uzyskany za pośrednictwem tego procesu jest używany do uzyskiwania dostępu do interfejsu API REST Centrum partnerskiego i interfejsu API platformy .NET.
Uwaga
Dostawcy panelu sterowania powinni mieć co najmniej rolę Administratora aplikacji w chmurze w dzierżawie klienta.
Przykłady uwierzytelniania dostawcy panelu w chmurze
Aby pomóc dostawcom panelu sterowania zrozumieć, jak wykonać każdą wymaganą operację, opracowaliśmy następujące przykłady. Podczas implementowania odpowiedniego rozwiązania w środowisku ważne jest opracowanie rozwiązania zgodnego ze standardami kodowania i zasadami zabezpieczeń.
.NET (uwierzytelnianie CPV)
Opracuj i wdróż proces dla partnerów Dostawca rozwiązań w chmurze w celu udzielenia odpowiedniej zgody. Aby uzyskać więcej informacji, zobacz zgoda partnera.
Ważne
Poświadczenia użytkownika od partnera Dostawca rozwiązań w chmurze nie powinny być przechowywane. Token odświeżania uzyskany za pośrednictwem procesu zgody partnera powinien być przechowywany i używany do żądania tokenów dostępu do interakcji z dowolnym interfejsem API firmy Microsoft.
Sklonuj repozytorium Partner-Center-DotNet-Samples przy użyciu programu Visual Studio lub następującego polecenia
git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
CPVApplication
Otwórz projekt znajdujący się wPartner-Center-DotNet-Samples\secure-app-model\keyvault
katalogu.Zaktualizuj ustawienia aplikacji znalezione w pliku App.config .
<!-- AppID that represents Control panel vendor application --> <add key="ida:CPVApplicationId" value="" /> <!-- Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file. --> <add key="ida:CPVApplicationSecret" value="" /> <!-- Endpoint address for the instance of Azure KeyVault --> <add key="KeyVaultEndpoint" value="" /> <!-- AppID that is given access for keyvault to store the refresh tokens --> <add key="ida:KeyVaultClientId" value="" /> <!-- Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file. --> <add key="ida:KeyVaultClientSecret" value="" />
Ustaw odpowiednie wartości dla zmiennych PartnerId i CustomerId znalezionych w pliku Program.cs .
// The following properties indicate which partner and customer context the calls are going to be made. string PartnerId = "<Partner tenant id>"; string CustomerId = "<Customer tenant id>";
Po uruchomieniu tego przykładowego projektu uzyskuje token odświeżania dla określonego partnera. Następnie żąda tokenu dostępu w celu uzyskania dostępu do Centrum partnerskiego i programu Microsoft Graph w imieniu partnera. Następnym zadaniem, które wykonuje, jest usunięcie i utworzenie dotacji uprawnień do dzierżawy klienta. Ponieważ nie ma relacji między dostawcą panelu sterowania a klientem, te uprawnienia należy dodać przy użyciu interfejsu API Centrum partnerskiego. W poniższym przykładzie pokazano, jak to osiągnąć.
JObject contents = new JObject { // Provide your application display name ["displayName"] = "CPV Marketplace", // Provide your application id ["applicationId"] = CPVApplicationId, // Provide your application grants ["applicationGrants"] = new JArray( JObject.Parse("{\"enterpriseApplicationId\": \"00000003-0000-0000-c000-000000000000\", \"scope\":\"Domain.ReadWrite.All,User.ReadWrite.All,Directory.Read.All\"}"), // for Microsoft Graph access, Directory.Read.All JObject.Parse("{\"enterpriseApplicationId\": \"797f4846-ba00-4fd7-ba43-dac1f8f63013\", \"scope\":\"user_impersonation\"}")) // for Azure Resource Manager access }; /** * The following steps have to be performed once per customer tenant if your application is * a control panel vendor application and requires customer tenant Microsoft Graph access. **/ // delete the previous grant into customer tenant JObject consentDeletion = await ApiCalls.DeleteAsync( tokenPartnerResult.Item1, string.Format("https://api.partnercenter.microsoft.com/v1/customers/{0}/applicationconsents/{1}", CustomerId, CPVApplicationId)); // create new grants for the application given the setting in application grants payload. JObject consentCreation = await ApiCalls.PostAsync( tokenPartnerResult.Item1, string.Format("https://api.partnercenter.microsoft.com/v1/customers/{0}/applicationconsents", CustomerId), contents.ToString());
Po ustanowieniu tych uprawnień przykład wykonuje operacje przy użyciu programu Microsoft Graph w imieniu klienta.
Uwaga
Aby uzyskać więcej informacji na temat programu Microsoft Graph, zobacz Omówienie programu Microsoft Graph.
Java (uwierzytelnianie CPV)
Opracuj i wdróż proces dla partnerów Dostawca rozwiązań w chmurze w celu udzielenia odpowiedniej zgody. Aby uzyskać więcej informacji i przykład, zobacz zgodę partnera.
Ważne
Poświadczenia użytkownika od partnera Dostawca rozwiązań w chmurze nie powinny być przechowywane. Token odświeżania uzyskany za pośrednictwem procesu zgody partnera powinien być przechowywany i używany do żądania tokenów dostępu do interakcji z dowolnym interfejsem API firmy Microsoft.
Sklonuj repozytorium Partner-Center-Java-Samples przy użyciu następującego polecenia
git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
cpvsample
Otwórz projekt znajdujący się wPartner-Center-Java-Samples\secure-app-model\keyvault
katalogu.Zaktualizuj ustawienia aplikacji znalezione w pliku application.properties .
azuread.authority=https://login.microsoftonline.com keyvault.baseurl= keyvault.clientId= keyvault.clientSecret= partnercenter.accountId= partnercenter.clientId= partnercenter.clientSecret= partnercenter.displayName=
Wartość elementu
partnercenter.displayName
powinna być nazwą wyświetlaną aplikacji marketplace.Ustaw odpowiednie wartości dla zmiennych partnerId i customerId znalezionych w pliku Program.java .
partnerId = "SPECIFY-THE-PARTNER-TENANT-ID-HERE"; customerId = "SPECIFY-THE-CUSTOMER-TENANT-ID-HERE";
Po uruchomieniu tego przykładowego projektu uzyskuje token odświeżania dla określonego partnera. Następnie żąda tokenu dostępu w celu uzyskania dostępu do Centrum partnerskiego w imieniu partnera. Następnym zadaniem, które wykonuje, jest usunięcie i utworzenie dotacji uprawnień do dzierżawy klienta. Ponieważ nie ma relacji między dostawcą panelu sterowania a klientem, te uprawnienia należy dodać przy użyciu interfejsu API Centrum partnerskiego. W poniższym przykładzie pokazano, jak udzielić uprawnień.
ApplicationGrant azureAppGrant = new ApplicationGrant(); azureAppGrant.setEnterpriseApplication("797f4846-ba00-4fd7-ba43-dac1f8f63013"); azureAppGrant.setScope("user_impersonation"); ApplicationGrant graphAppGrant = new ApplicationGrant(); graphAppGrant.setEnterpriseApplication("00000002-0000-0000-c000-000000000000"); graphAppGrant.setScope("Domain.ReadWrite.All,User.ReadWrite.All,Directory.Read.All"); ApplicationConsent consent = new ApplicationConsent(); consent.setApplicationGrants(Arrays.asList(azureAppGrant, graphAppGrant)); consent.setApplicationId(properties.getProperty(PropertyName.PARTNER_CENTER_CLIENT_ID)); consent.setDisplayName(properties.getProperty(PropertyName.PARTNER_CENTER_DISPLAY_NAME)); // Deletes the existing grant into the customer it is present. partnerOperations.getServiceClient().delete( partnerOperations, new TypeReference<ApplicationConsent>(){}, MessageFormat.format( "customers/{0}/applicationconsents/{1}", customerId, properties.getProperty(PropertyName.PARTNER_CENTER_CLIENT_ID))); // Consent to the defined applications and the respective scopes. partnerOperations.getServiceClient().post( partnerOperations, new TypeReference<ApplicationConsent>(){}, MessageFormat.format( "customers/{0}/applicationconsents", customerId), consent);
Usuń komentarz z wywołań funkcji RunAzureTask i RunGraphTask , jeśli chcesz zobaczyć, jak korzystać z usług Azure Resource Manager i Microsoft Graph w imieniu klienta.