Tworzenie bezpiecznej aplikacji partnera
Platformę Secure Application Model można zaimplementować, tworząc aplikację dla Dostawca rozwiązań w chmurze s (CSP) lub dostawców Panel sterowania (CPV).
Implementowanie bezpiecznego modelu aplikacji
Kroki włączania bezpiecznego modelu aplikacji
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.
Tworzenie jednostki usługi Centrum partnerskiego
Najpierw utwórz jednostkę usługi Centrum partnerskiego Firmy Microsoft w dzierżawie partnera CSP, w której zostanie utworzona wielodostępna aplikacja.
W przypadku dzierżaw partnerów CSP ta jednostka usługi powinna już istnieć. Jeśli nie, utwórz je, wykonując następujące kroki.
W oknie programu PowerShell administratora uruchom następujące polecenia.
- Zainstaluj moduł AzureAD.
Install-Module Microsoft.Graph
- Uruchom polecenie Połączenie-MgGraph. Spowoduje to wyświetlenie monitu o podanie nazwy użytkownika i hasła. Wprowadź poświadczenia administratora dzierżawy.
Connect-MgGraph
- Utwórz jednostkę usługi Centrum partnerskiego firmy Microsoft.
New-MgServicePrincipal -DisplayName "Microsoft Partner Center" -AppId fa3d9a0c-3fb0-42cc-9193-47c7ecd2edbd
Tworzenie aplikacji wielodostępnej w dzierżawie partnera CSP
Wykonaj poniższe kroki, aby upewnić się, że następujące właściwości aplikacji są ustawione dla nowo utworzonej aplikacji wielodostępnych.
- Zaloguj się do portal.azure.com
- Wybierz pozycję Microsoft Entra ID i Rejestracje aplikacji, aby utworzyć nowe rejestracje z wieloma dzierżawami.
- Wybierz nazwę wyświetlaną aplikacji, która ma być wyświetlana dla użytkownika.
- Wybierz pozycję Obsługiwany typ konta: Konta w dowolnym katalogu organizacyjnym (Dowolny katalog Firmy Microsoft — multitenant).
- Wybierz typ platformy "Sieć Web".
- Adres URL przekierowania musi być adresem URL przekierowania aplikacji, który spowoduje wyświetlenie komunikatu o powodzeniu zgody dla partnera i zebranie tokenu odświeżania. Upewnij się, że adres URL przekierowania aplikacji jest ustawiony na punkt końcowy, w którym działa aktywna aplikacja internetowa. Ta aplikacja musi zaakceptować kod autoryzacji z wywołania logowania firmy Microsoft Entra.
- Przejdź do pozycji Zarządzaj>certyfikatami i wpisami tajnymi>+Nowy klucz tajny klienta na karcie Wpisy tajne klienta.
Uwaga
Potrzebne będą następujące informacje z ustawień aplikacji internetowej w identyfikatorze Entra firmy Microsoft:
- Application ID
- Wpis tajny aplikacji
Stosowanie uprawnień
Upewnij się, że dla aplikacji wielodostępnych ustawiono następujące uprawnienia.
W sekcji uprawnienia interfejsu API:
Nie powinno istnieć żadne bezpośrednie uprawnienia aplikacji do aplikacji wielodostępnej.
Postępuj zgodnie z poniższą ścieżką, aby dodać uprawnienia delegowane dla programu Microsoft Graph:
- Uprawnienia>interfejsu API Dodaj uprawnienie>Microsoft APIs>Microsoft Graph>Delegowane uprawnienia
DelegatedAdminRelationship.ReadWrite.All User.Read.All
- Postępuj zgodnie z poniższą ścieżką, aby dodać uprawnienia delegowane dla Centrum partnerskiego firmy Microsoft — udziel uprawnień Centrum partnerskiego programu Access w obszarze Uprawnienia delegowane:
- Uprawnienia>interfejsu API Dodaj interfejsy API uprawnień>moja organizacja używa>personifikacji użytkownika delegowanego>w Centrum>partnerskim firmy Microsoft
- Uprawnienia>interfejsu API Dodaj uprawnienie>Microsoft APIs>Microsoft Graph>Delegowane uprawnienia
Podaj link zgody
Utwórz partnera z linkiem zgody i zaloguj się przy użyciu konta usługi, aby zatwierdzić aplikację w imieniu konta usługi w dzierżawie partnera.
Użytkownik partnera CSP musi być globalnym Administracja i agentem Administracja, aby wyrazić zgodę na wielodostępną aplikację.
Aplikacja z wieloma dzierżawami
Należy zastąpić wielodostępną ApplicationID
identyfikatorem aplikacji.
Przejdź do pozycji Rejestracje aplikacji i wybierz identyfikator aplikacji (klienta) i zastąp poniżej.
Uzyskiwanie kodu autoryzacji
Musisz uzyskać kod autoryzacji dla aplikacji internetowej z wywołania logowania firmy Microsoft Entra:
- Zaloguj się do identyfikatora Entra firmy Microsoft.
- Zastąp ciąg Application-Id identyfikatorem aplikacji (GUID) firmy Microsoft.
- Po wyświetleniu monitu zaloguj się przy użyciu konta użytkownika ze skonfigurowaną usługą MFA.
- Po wyświetleniu monitu wprowadź inne informacje dotyczące uwierzytelniania wieloskładnikowego (numer telefonu lub adres e-mail), aby zweryfikować logowanie.
- Po zalogowaniu przeglądarka przekierowuje wywołanie do punktu końcowego aplikacji internetowej przy użyciu kodu autoryzacji. Na przykład poniższy przykładowy kod przekierowuje do
https://localhost:44395/
metody .
GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code&redirect_url=https://<CSPApplicationUrl_which_collects_refreshtoken>
lub
GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code
W przypadku Chin użyj następującego linku:
GET https://login.chinacloudapi.cn/common/oauth2/authorize ?&client_id= <CSPApplicationId>&response_type=code&redirect_url= https://<CSPApplicationUrl_which_collects_refreshtoken>
lub
GET https://login.chinacloudapi.cn/common/oauth2/authorize?&client_id= <CSPApplicationId>&response_type=code
Ślad wywołania kodu autoryzacji: https://localhost:44395/?code=<authorization_code>&<rest of properties for state>
Uzyskiwanie tokenu odświeżania
Następnie należy użyć kodu autoryzacji, aby uzyskać token odświeżania:
- Wykonaj wywołanie POST do punktu końcowego
https://login.microsoftonline.com/CSPTenantID/oauth2/token
logowania w usłudze Microsoft Entra przy użyciu kodu autoryzacji. Aby zapoznać się z przykładem, zobacz następujące przykładowe wywołanie. - Zanotuj zwrócony token odświeżania.
- Przechowywanie tokenu odświeżania w usłudze Azure Key Vault. Aby uzyskać więcej informacji, zobacz dokumentację interfejsu API usługi Key Vault.
Uwaga
Zasoby wymienione w poniższym przykładowym wywołaniu POST dotyczą interfejsów API programu GDAP-Graph.
Zasoby dla innych interfejsów API komputerów są następujące:
Interfejsy API Centrum partnerskiego (https://api.partnercenter.microsoft.com
)
Interfejs API partnera (https://api.partner.microsoft.com
)
Przykładowe wywołanie
POST 'https://login.microsoftonline.com/<partnerTenantId>/oauth2/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--form 'grant_type="authorization_code"' \
--form 'client_id=<application_id or client_id>' \
--form 'resource="https://graph.microsoft.com"' \
--form 'code="<authorization_code>"'
Response Body:
{
"token_type": "Bearer",
"scope": "DelegatedAdminRelationship.ReadWrite.All User.Read.All",
"expires_in": "4549",
"ext_expires_in": "4549",
"expires_on": "1652886571",
"not_before": "1652881721",
"resource": "https://graph.microsoft.com",
"access_token": "Access_token",
"refresh_token": "Refresh_token",
"id_token": "Id_token"
}
Konfigurowanie magazynu kluczy
Najpierw utwórz nową aplikację internetową w dzierżawie partnera CSP. Jeśli aplikacja CPV jest używana do wywoływania interfejsów API Centrum partnerskiego, protokół CPV powinien utworzyć nową aplikację internetową w dzierżawie partnera CPV.
Jeśli używasz usługi Azure Key Vault:
- Utwórz usługę Azure Key Vault z odpowiednią nazwą
<key-vault-name>
i powoduje utworzenie nazwy DNS, takiej jak:https://<key-vault-name>.vault.azure.net
- Dodaj token odświeżania do magazynu kluczy.
Zapewnianie dostępu do magazynu kluczy
W zasadach dostępu magazynu kluczy dodaj aplikację KeyVaultAccessApp z uprawnieniami, aby zarządzać tylko aspektami pobierania i ustawiania wpisu tajnego.
Konfigurowanie prototypu
Prototyp ma dwie aplikacje:
- Zgoda partnera: reprezentuje aplikację internetową przeznaczoną do akceptowania zgody od partnera CSP i wyświetlania komunikatu o powodzeniu.
- Ta aplikacja konfiguruje zgodę i przechwytuje token odświeżania użytkownika, który wyraził zgodę.
- Token odświeżania użytkownika z zgodą jest używany do generowania tokenu dostępu dla dzierżawy partnera CSP.
- Aplikacja CSP lub aplikacja CPV: reprezentuje podstawową aplikację, która wywołuje interfejsy API centrum partnerskiego i grafy.
- Interfejsy API do wykonywania akcji handlowych i użytkowników w imieniu partnera.
Ta aplikacja pobiera token dostępu dla określonych odbiorców (interfejsy API centrum partnerskiego lub wykres) przed wywołaniem odpowiednich interfejsów API. Używa tokenu odświeżania przechowywanego bezpiecznie w magazynie kluczy.
Aplikacja zgody partnera (CSP)
Konfiguracja sieci Web programu CSP
W przypadku aplikacji web.config
partnera CSP plik zawiera następujące sekcje. Zaktualizuj te wartości przy użyciu odpowiednich identyfikatorów aplikacji i wpisów tajnych. W przypadku podstawowej aplikacji użyj "certyfikatu" jako wpisu tajnego aplikacji internetowej zamiast zwykłych wpisów tajnych, ponieważ zapewnia dodatkową warstwę zabezpieczeń.
<!-- AppID that represents CSP application -->
<add key="ida:CSPApplicationId" value="CSPApplicationIdValue" />
<!--
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="CSPApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens --> <add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
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="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
Konfiguracja aplikacji CSP
W przypadku aplikacji app.config
partnera CSP plik zawiera następujące sekcje. Zaktualizuj wartości przy użyciu odpowiednich identyfikatorów aplikacji i wpisów tajnych. W przypadku podstawowej aplikacji użyj "certyfikatu" jako wpisu tajnego aplikacji internetowej zamiast zwykłych wpisów tajnych, ponieważ zapewnia dodatkową warstwę zabezpieczeń.
<!-- AppID that represents CSP application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
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="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
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="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de,
China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
Aplikacja zgody partnera (CPV)
Dostawcy CPV korzystający z aplikacji CPV mogą wywoływać interfejs API ApplicationConsent w celu utworzenia jednostki usługi w dzierżawie klienta w celu uzyskania dostępu do programu Microsoft Graph w celu zarządzania dzierżawami klientów. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie w Centrum partnerskim.
Konfiguracja sieci Web CPV
W przypadku aplikacji web.config
partnera CSP plik zawiera następujące sekcje. Zaktualizuj te wartości przy użyciu odpowiednich identyfikatorów aplikacji i wpisów tajnych. W przypadku podstawowej aplikacji użyj "certyfikatu" jako wpisu tajnego aplikacji internetowej zamiast zwykłych wpisów tajnych, ponieważ zapewnia dodatkową warstwę zabezpieczeń.
<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
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="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
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="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
Konfiguracja aplikacji CPV
W przypadku aplikacji app.config
partnerskiej CPV plik zawiera następujące sekcje. Zaktualizuj wartości przy użyciu odpowiednich identyfikatorów aplikacji i wpisów tajnych. W przypadku podstawowej aplikacji użyj "certyfikatu" jako wpisu tajnego aplikacji internetowej zamiast zwykłych wpisów tajnych, ponieważ zapewnia dodatkową warstwę zabezpieczeń.
<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
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="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
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="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />