Freigeben über


Erstellen einer sicheren Partneranwendung

Sie können das Framework für das sichere Anwendungsmodell implementieren, indem Sie eine Anwendung für Cloud Solution Providers (CSPs) oder Control Panel Vendors (CPVs) erstellen.

Implementieren eines sicheren Anwendungsmodells

Schritte zum Aktivieren des sicheren Anwendungsmodells

Von Bedeutung

Azure Active Directory (Azure AD) Graph ist ab dem 30. Juni 2023 veraltet. In Zukunft investieren wir nicht mehr in Azure AD Graph. Azure AD Graph-APIs haben keine SLA- oder Wartungsverpflichtungen, die über sicherheitsbezogene Fixes hinausgehen. Investitionen in neue Features und Funktionen werden nur in Microsoft Graph getätigt.

Azure AD Graph wird in schrittweise vorgenommenen Etappen außer Betrieb genommen, sodass Sie genügend Zeit haben, Ihre Anwendungen auf die Microsoft-Graph-APIs zu migrieren. Zu einem späteren Zeitpunkt, an dem wir ihnen mitteilen werden, werden wir die Erstellung neuer Anwendungen mit Azure AD Graph blockieren.

Weitere Informationen finden Sie unter Wichtig: Deaktivierung von Azure AD Graph und Einstellung des Powershell-Moduls.

Erstellen eines Partner Center-Dienstprinzipals

Erstellen Sie zunächst einen Microsoft Partner Center-Dienstprinzipal im Mandanten des CSP-Partners, in dem die mehrinstanzenfähige Anwendung erstellt wird.

Für CSP-Partnermandanten sollte dieser Dienstprinzipal bereits vorhanden sein. Ist dies nicht der Fall, führen Sie die folgenden Schritte aus.

Führen Sie in einem PowerShell-Administratorfenster die folgenden Befehle aus.

  1. Installieren Sie das AzureAD-Modul. Install-Module Microsoft.Graph
  2. Führen Sie Connect-MgGraph aus, um zur Eingabe eines Benutzernamens und eines Kennworts aufzufordern. Geben Sie die Anmeldeinformationen des Mandantenadministrators ein. Connect-MgGraph
  3. Erstellen Sie einen Microsoft Partner Center-Dienstprinzipal. New-MgServicePrincipal -DisplayName "Microsoft Partner Center" -AppId 00001111-aaaa-2222-bbbb-3333cccc4444

Erstellen einer mehrinstanzenfähigen Anwendung im Mandanten des CSP-Partners

Führen Sie die folgenden Schritte aus, um sicherzustellen, dass die folgenden Anwendungseigenschaften für die neu erstellte mehrinstanzenfähige Anwendung festgelegt sind.

  1. Melden Sie sich bei portal.azure.com an
  2. Wählen Sie Microsoft Entra ID- und App-Registrierungen aus, um neue Registrierungen mit mehreren Mandanten zu erstellen.

Screenshot zeigt Registrieren eines App-Modals.

  1. Wählen Sie einen benutzerseitigen Anzeigenamen für Ihre Anwendung aus.
  2. Wählen Sie Unterstützter Kontotyp aus: Konten in einem beliebigen Organisationsverzeichnis (Beliebiges Microsoft Entra Verzeichnis – Mehrinstanzenfähig).
  3. Wählen Sie den Plattformtyp "Web" aus.
  4. Bei der Umleitungs-URL muss es sich um die Umleitungs-URL Ihrer Anwendung handeln, die dem Partner die Nachricht über den Erfolg der Einwilligung anzeigt und ein Aktualisierungstoken erfasst. Stellen Sie sicher, dass die Umleitungs-URL Ihrer App auf einen Endpunkt festgelegt ist, an dem eine Live-Web-App ausgeführt wird. Diese App muss den Autorisierungscode aus dem Microsoft Entra Anmeldeaufruf akzeptieren.
  5. Gehen Sie auf der Registerkarte Geheime Clientschlüssel zuZertifikate und Geheimnisse>verwalten>+Neuer geheimer Clientschlüssel.

Hinweis

Sie benötigen die folgenden Informationen aus den Einstellungen Ihrer Web-App in Microsoft Entra ID:

  • Anwendungs-ID
  • Anwendungsgeheimnis

Screenshot mit Zertifikaten und Geheimnissen.

Anwenden von Berechtigungen

Stellen Sie sicher, dass die folgenden Berechtigungen für die mehrinstanzenfähige Anwendung festgelegt sind.

Gehen Sie im Abschnitt API-Berechtigungen wie folgt vor:

  • Es sollten keine direkten Anwendungsberechtigungen für die mehrinstanzenfähige Anwendung vorhanden sein.

  • Befolgen Sie den folgenden Pfad zum Hinzufügen delegierter Berechtigungen für Microsoft Graph:

    • API-Berechtigungen>Hinzufügen einer Berechtigung>Microsoft-APIs>Microsoft Graph (Englisch>)Delegierte Berechtigungen
      • DelegatedAdminRelationship.ReadWrite.All User.Read.All

    Screenshot mit API-Berechtigungen für Partner-App-Anfragen.

    • Befolgen Sie den folgenden Pfad zum Hinzufügen delegierter Berechtigungen für Microsoft Partner Center – Erteilen von Access PartnerCenter-Berechtigungen unter Delegierte Berechtigungen:
      • API-Berechtigungen>Hinzufügen einer Berechtigung>APIs, die meine Organisation verwendet>Microsoft Partner Center>Delegierte Berechtigungen>Benutzer-Identitätswechsel

    Screenshot mit den Berechtigungen der Partner-App A P I.

Präsentieren Sie dem Partner den Zustimmungslink, und bitten Sie ihn, sich mit seinem Dienstkonto anzumelden, um die Anwendung zu genehmigen, die im Namen des Dienstkontos für den Partnermandanten ausgeführt wird.

Der CSP-Partnerbenutzer muss ein globaler Administrator und ein Administrator-Agent sein , um der mehrinstanzenfähigen Anwendung zuzustimmen.

Multi-Tenant-Anwendung

Der mehrinstanzenfähige ApplicationID Befehl muss durch Ihre Anwendungs-ID ersetzt werden.

Navigieren Sie zu App-Registrierungen , wählen Sie die Anwendungs-ID (Client-ID) aus und ersetzen Sie sie.

Screenshot des Microsoft Entra Client des Partners.

Abrufen des Autorisierungscodes

Sie müssen einen Autorisierungscode für Ihre Web-App aus dem Microsoft Entra Anmeldeaufruf abrufen:

  1. Melden Sie sich bei Microsoft Entra ID an.
  2. Ersetzen Sie Application-Id durch Ihre Microsoft Entra App-ID (GUID).
  3. Wenn Sie dazu aufgefordert werden, melden Sie sich mit Ihrem Benutzerkonto an, für das MFA konfiguriert ist.
  4. Wenn Sie dazu aufgefordert werden, geben Sie weitere MFA-Informationen (Telefonnummer oder E-Mail-Adresse) ein, um Ihre Anmeldung zu bestätigen.
  5. Nachdem Sie sich angemeldet haben, leitet der Browser den Aufruf mit Ihrem Autorisierungscode an Ihren Web-App-Endpunkt weiter. Der folgende Beispielcode leitet z. B. zu https://localhost:44395/um.
GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code&redirect_url=https://<CSPApplicationUrl_which_collects_refreshtoken>

oder

GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code

Für China verwenden Sie den folgenden Link:

GET https://login.chinacloudapi.cn/common/oauth2/authorize ?&client_id= <CSPApplicationId>&response_type=code&redirect_url= https://<CSPApplicationUrl_which_collects_refreshtoken>

oder

GET https://login.chinacloudapi.cn/common/oauth2/authorize?&client_id= <CSPApplicationId>&response_type=code

Autorisierungscode-Aufrufverfolgung: https://localhost:44395/?code=<authorization_code>&<rest of properties for state>

Abrufen des Aktualisierungstokens

Sie müssen dann Ihren Autorisierungscode verwenden, um ein Aktualisierungstoken abzurufen:

  1. Führen Sie mit dem Autorisierungscode einen POST-Aufruf an den Microsoft Entra-Anmeldeendpunkt https://login.microsoftonline.com/CSPTenantID/oauth2/token aus. Ein Beispiel finden Sie im folgenden Beispielaufruf.
  2. Notieren Sie sich das Aktualisierungstoken, das zurückgegeben wird.
  3. Speichern Sie das Aktualisierungstoken in Azure Key Vault. Weitere Informationen finden Sie in der Key Vault-API-Dokumentation.

Hinweis

Die Ressourcen, die im folgenden POST-Beispielaufruf erwähnt werden, gelten für GDAP-Graph APIs.

Die Ressourcen für andere PC-APIs lauten wie folgt:

Partner Center-APIs (https://api.partnercenter.microsoft.com)

GDAP-APIs

Partner-API (https://api.partner.microsoft.com)

Beispiel für einen Anruf

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"
}

Einrichten des Schlüsseltresors

Erstellen Sie zunächst eine neue Webanwendung im Mandanten des CSP-Partners. Wenn die CPV-Anwendung zum Aufrufen der Partner Center-APIs verwendet wird, sollte CPV eine neue Webanwendung im Mandanten des CPV-Partners erstellen.

Wenn Sie Azure Key Vault verwenden:

  1. Erstellen Sie den Azure Key Vault mit dem entsprechenden <key-vault-name> Namen, und dies führt zu einem DNS-Namen wie dem folgenden: https://<key-vault-name>.vault.azure.net
  2. Fügen Sie dem Schlüsseltresor ein Aktualisierungstoken hinzu.

Bereitstellen des Zugriffs auf den Schlüsseltresor

Fügen Sie in den Zugriffsrichtlinien des Schlüsseltresors die KeyVaultAccessApp mit Berechtigungen hinzu, um nur die Aspekte "Get" und "Set " eines Geheimnisses zu verwalten.

Screenshot mit den erforderlichen Berechtigungen für die CSP-Partner-App.

Konfigurieren des Prototyps

Der Prototyp hat zwei Anwendungen:

  • Partnereinwilligung: Stellt eine Webanwendung dar, die die Zustimmung eines CSP-Partners akzeptiert und eine Erfolgsmeldung anzeigt.
    • Diese Anwendung richtet die Einwilligung ein und erfasst das Aktualisierungstoken des Benutzers, dem die Einwilligung erteilt wurde.
    • Das Aktualisierungstoken des einwilligenden Benutzers wird zum Generieren des Zugriffstokens für den CSP-Partnermandanten verwendet.
  • CSP-Anwendung oder CPV-Anwendung: Stellt eine primäre Anwendung dar, die Partner Center-APIs und -Graph aufruft.
    • APIs zum Ausführen von Commerce- und Benutzeraktionen im Namen des Partners.

Diese Anwendung ruft das Zugriffstoken für eine bestimmte Zielgruppe (Partner Center-APIs oder Graph) ab, bevor die entsprechenden APIs aufgerufen werden. Es wird das Aktualisierungstoken verwendet, das sicher im Schlüsseltresor gespeichert ist.

CSP-Webkonfiguration

Für die CSP-Partneranwendung enthält die web.config Datei die folgenden Abschnitte. Aktualisieren Sie diese Werte mit den entsprechenden Anwendungs-IDs und Geheimnissen. Verwenden Sie für Ihre primäre Anwendung "certificate" als geheimen Schlüssel für die Webanwendung anstelle von einfachen Geheimnissen, da dies eine zusätzliche Sicherheitsebene bietet.

<!-- 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/" />

Konfiguration der CSP-Anwendung

Für die CSP-Partneranwendung enthält die app.config Datei die folgenden Abschnitte. Aktualisieren Sie die Werte mit den entsprechenden Anwendungs-IDs und Geheimnissen. Verwenden Sie für Ihre primäre Anwendung "certificate" als geheimen Schlüssel für die Webanwendung anstelle von einfachen Geheimnissen, da dies eine zusätzliche Sicherheitsebene bietet.

<!-- 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/" />

CSPs, die die CPV-Anwendung verwenden, können die ApplicationConsent-API aufrufen, um den Dienstprinzipal für den Kundenmandanten zu erstellen und auf Microsoft Graph zuzugreifen, um die Kundenmandanten zu verwalten. Weitere Informationen finden Sie unter Partner Center-Authentifizierung.

CPV-Web-Konfiguration

Für die CSP-Partneranwendung enthält die web.config Datei die folgenden Abschnitte. Aktualisieren Sie diese Werte mit den entsprechenden Anwendungs-IDs und Geheimnissen. Verwenden Sie für Ihre primäre Anwendung "certificate" als geheimen Schlüssel für die Webanwendung anstelle von einfachen Geheimnissen, da dies eine zusätzliche Sicherheitsebene bietet.

<!-- 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/" />

Konfiguration der CPV-Anwendung

Für die CPV-Partneranwendung enthält die app.config Datei die folgenden Abschnitte. Aktualisieren Sie die Werte mit den entsprechenden Anwendungs-IDs und Geheimnissen. Verwenden Sie für Ihre primäre Anwendung "certificate" als geheimen Schlüssel für die Webanwendung anstelle von einfachen Geheimnissen, da dies eine zusätzliche Sicherheitsebene bietet.

<!-- 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/" />