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

  1. 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.

  2. 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.

  3. 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

W przeszłości przyznawanie poświadczeń hasła właściciela zasobu było używane do żądania tokenu dostępu do użycia z interfejsem API REST Centrum partnerskiego, interfejsem API platformy .NET, interfejsem API języka Java lub modułem programu PowerShell. Ta metoda została użyta do żądania tokenu dostępu z identyfikatora Entra firmy Microsoft przy użyciu identyfikatora klienta i poświadczeń użytkownika. Jednak takie podejście nie będzie już działać, ponieważ Centrum partnerskie wymaga uwierzytelniania wieloskładnikowego w przypadku korzystania z uwierzytelniania aplikacji i użytkownika. Aby spełnić to wymaganie, firma Microsoft wprowadziła bezpieczną, skalowalną platformę do uwierzytelniania partnerów Dostawca rozwiązań w chmurze (CSP) i dostawców panelu sterowania (CPV) przy użyciu uwierzytelniania wieloskładnikowego. Ta struktura jest znana jako model bezpiecznej aplikacji i składa się z procesu wyrażania zgody oraz żądania tokenu dostępu przy użyciu tokenu odświeżania.

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, które jest zgodne 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.

  1. 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.

  2. 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.

  3. 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
    
  4. 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.

  5. 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
    
  6. Otwórz projekt PartnerConsent znajdujący się w Partner-Center-DotNet-Samples\secure-app-model\keyvault katalogu.

  7. 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.

  8. 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.

  1. 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.

  2. 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.

  3. 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
    
  4. 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.

  5. Sklonuj repozytorium Partner-Center-Java-Samples przy użyciu następującego polecenia

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  6. Otwórz projekt PartnerConsent znajdujący się w Partner-Center-Java-Samples\secure-app-model\keyvault katalogu.

  7. 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.

  8. 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, które jest zgodne ze standardami kodowania i zasadami zabezpieczeń.

.NET (uwierzytelnianie CSP)

  1. Jeśli jeszcze tego nie zrobiono, wykonaj proces wyrażania zgody partnera.

  2. 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
    
  3. CSPApplication Otwórz projekt znajdujący się w Partner-Center-DotNet-Samples\secure-app-model\keyvault katalogu.

  4. 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="" />
    
  5. 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>";
    
  6. 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)

  1. Jeśli jeszcze tego nie zrobiono, wykonaj proces wyrażania zgody partnera.

  2. 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
    
  3. cspsample Otwórz projekt znajdujący się w Partner-Center-Java-Samples\secure-app-model\keyvault katalogu.

  4. 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=
    
  5. 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.

  6. 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ę Administracja istratora 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, które jest zgodne ze standardami kodowania i zasadami zabezpieczeń.

.NET (uwierzytelnianie CPV)

  1. 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.

  2. 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
    
  3. CPVApplication Otwórz projekt znajdujący się w Partner-Center-DotNet-Samples\secure-app-model\keyvault katalogu.

  4. 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="" />
    
  5. 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>";
    
  6. 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)

  1. 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.

  2. Sklonuj repozytorium Partner-Center-Java-Samples przy użyciu następującego polecenia

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. cpvsample Otwórz projekt znajdujący się w Partner-Center-Java-Samples\secure-app-model\keyvault katalogu.

  4. 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.

  5. 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";
    
  6. 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.