Freigeben über


Erstellen einer sicheren Partneranwendung

Sie können das Secure Application Model Framework implementieren, indem Sie eine Anwendung für Cloud Solution Providers (CSPs) oder Systemsteuerung Vendors (CPVs) erstellen.

Implementieren eines sicheren Anwendungsmodells

Schritte zum Aktivieren des sicheren Anwendungsmodells

Wichtig

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 Standard Zusicherung über sicherheitsbezogene Fixes hinaus. Investitionen in neue Features und Funktionalitäten werden nur für Microsoft Graph vorgenommen.

Azure AD Graph wird inkrementellen Schritten eingestellt, sodass Sie genügend Zeit haben, um Ihre Anwendungen zu 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": Veraltetes Azure AD Graph- und Powershell-Modul.To learn more, see Important: Azure AD Graph Retirement and Powershell Module Deprecation.

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

Für CSP-Partnermandanten sollte dieser Dienstprinzipal bereits vorhanden sein. Falls nicht, erstellen Sie die folgenden Schritte.

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

  1. Installieren Sie das Azure AD-Modul. Install-Module Microsoft.Graph
  2. Führen Sie Verbinden-MgGraph aus, um einen Benutzernamen und ein Kennwort einzugeben. Geben Sie die Anmeldeinformationen des Mandantenadministrators ein. Connect-MgGraph
  3. Erstellen Sie einen Microsoft Partner Center-Dienstprinzipal. New-MgServicePrincipal -DisplayName "Microsoft Partner Center" -AppId fa3d9a0c-3fb0-42cc-9193-47c7ecd2edbd

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. Anmelden bei portal.azure.com
  2. Wählen Sie Microsoft Entra ID und App-Registrierungen aus, um neue Registrierungen mit mehrinstanzenfähig zu erstellen.

Screenshot: Registrieren einer app modal.

  1. Wählen Sie einen benutzerorientierten Anzeigenamen für Ihre Anwendung aus.
  2. Wählen Sie den unterstützten Kontotyp aus: Konten in einem beliebigen Organisationsverzeichnis (beliebiges Microsoft Entra-Verzeichnis – Multitenant).
  3. Wählen Sie einen Plattformtyp "Web" aus.
  4. Die Umleitungs-URL muss Ihre Anwendungsumleitungs-URL sein, die die Zustimmungserfolgsnachricht an den Partner anzeigt und ein Aktualisierungstoken sammelt. Stellen Sie sicher, dass die Umleitungs-URL Ihrer App auf einen Endpunkt festgelegt ist, auf dem eine Live-Web-App ausgeführt wird. Diese App muss den Autorisierungscode aus dem Microsoft Entra-Anmeldeaufruf akzeptieren.
  5. Wechseln Sie auf der Registerkarte "Geheime Clientschlüssel" zu "Zertifikate und geheime> Schlüssel verwalten>"+ "Neuer geheimer Clientschlüssel".

Hinweis

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

  • Anwendungs-ID
  • Anwendungsgeheimnis

Screenshot mit Zertifikaten und geheimen Schlüsseln.

Anwenden von Berechtigungen

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

Im API-Berechtigungsabschnitt:

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

  • Folgen Sie dem folgenden Pfad zum Hinzufügen delegierter Berechtigungen für Microsoft Graph:

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

    Screenshot, der Partner-App-Anforderungs-API-Berechtigungen zeigt.

    • Folgen Sie dem folgenden Pfad zum Hinzufügen delegierter Berechtigungen für Das Microsoft Partner Center – Erteilen von Zugriffs-Partner Center-Berechtigungen unter delegierten Berechtigungen:
      • API-Berechtigungen Hinzufügen einer Berechtigungs-APIs>, die meine Organisation verwendet>Microsoft Partner Center>Delegierte Berechtigungen>Benutzeridentitätswechsel>

    Screenshot der Partner-App A P I-Berechtigungen.

Präsentieren Sie den Partner mit dem Zustimmungslink, und melden Sie sich mit ihrem Dienstkonto an, um die Anwendung im Namen des Dienstkontos auf dem Partnermandanten zu genehmigen.

Der CSP-Partnerbenutzer muss ein globaler Administrator und ein Administrator-Agent sein , um der Mehrinstanzenanwendung zuzustimmen.

Mehrinstanzenanwendung

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

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

Screenshot des Microsoft Entra-Clients für Partner.

Abrufen des Autorisierungscodes

Sie müssen über den Microsoft Entra-Anmeldeaufruf einen Autorisierungscode für Ihre Web-App erhalten:

  1. Melden Sie sich bei der Microsoft Entra-ID an.
  2. Ersetzen Sie die Anwendungs-ID durch Ihre Microsoft Entra-App-ID (GUID).
  3. Wenn Sie dazu aufgefordert werden, melden Sie sich mit Ihrem Benutzerkonto an, bei dem MFA konfiguriert ist.
  4. Wenn Sie dazu aufgefordert werden, geben Sie andere MFA-Informationen (Telefonnummer oder E-Mail-Adresse) ein, um Ihre Anmeldung zu überprüfen.
  5. Nachdem Sie angemeldet sind, leitet der Browser den Aufruf an Ihren Web App-Endpunkt mit Ihrem Autorisierungscode um. Der folgende Beispielcode leitet z. B. an https://localhost:44395/ weiter.
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

Verwenden Sie für China 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

Ablaufverfolgung des Autorisierungscodes: https://localhost:44395/?code=<authorization_code>&<rest of properties for state>

Abrufen des Aktualisierungstokens

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

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

Hinweis

Die im folgenden Beispiel-POST-Aufruf Erwähnung Ressourcen gelten für GDAP-Graph-APIs.

Ressourcen für andere PC-APIs sind wie folgt:

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

GDAP-APIs

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

Beispielaufruf

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> Und führt zu einem DNS-Namen wie: https://<key-vault-name>.vault.azure.net
  2. Fügen Sie dem Schlüsseltresor ein Aktualisierungstoken hinzu.

Gewähren des Zugriffs auf den Schlüsseltresor

Fügen Sie in den Zugriffsrichtlinien des Schlüsseltresors die KeyVaultAccessApp mit Berechtigungen hinzu, um nur die Aspekte "Abrufen " und "Festlegen " eines geheimen Schlüssels zu verwalten.

Screenshot der erforderlichen CSP-Partner-App.

Konfigurieren des Prototyps

Der Prototyp verfügt über zwei Anwendungen:

  • Partnerzustimmung: Stellt eine Webanwendung dar, die die Zustimmung eines CSP-Partners akzeptiert und eine Erfolgsmeldung zeigt.
    • Diese Anwendung richtet die Zustimmung ein und erfasst das Aktualisierungstoken des zugestimmten Benutzers.
    • Das Aktualisierungstoken des zugestimmten 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) vor dem Aufrufen der entsprechenden APIs ab. Es verwendet das Aktualisierungstoken, das sicher im Schlüsseltresor gespeichert wird.

CSP-Webkonfiguration

Für die CSP-Partneranwendung hat die web.config Datei die folgenden Abschnitte aufgerufen. Aktualisieren Sie diese Werte mit entsprechenden Anwendungs-IDs und geheimen Schlüsseln. Verwenden Sie für Ihre primäre Anwendung "Zertifikat" als geheimen Webanwendungsschlüssel anstelle einfacher geheimer Schlüssel, da sie 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/" />

CSP-Anwendungskonfiguration

Für die CSP-Partneranwendung hat die app.config Datei die folgenden Abschnitte aufgerufen. Aktualisieren Sie die Werte mit den entsprechenden Anwendungs-IDs und geheimen Schlüsseln. Verwenden Sie für Ihre primäre Anwendung "Zertifikat" als geheimen Webanwendungsschlüssel anstelle einfacher geheimer Schlüssel, da sie 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, um auf Microsoft Graph zuzugreifen, um die Kundenmandanten zu verwalten. Weitere Informationen finden Sie unter Partner Center-Authentifizierung.

CPV-Webkonfiguration

Für die CSP-Partneranwendung hat die web.config Datei die folgenden Abschnitte aufgerufen. Aktualisieren Sie diese Werte mit entsprechenden Anwendungs-IDs und geheimen Schlüsseln. Verwenden Sie für Ihre primäre Anwendung "Zertifikat" als geheimen Webanwendungsschlüssel anstelle einfacher geheimer Schlüssel, da sie 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/" />

CPV-Anwendungskonfiguration

Für die CPV-Partneranwendung hat die app.config Datei die folgenden Abschnitte aufgerufen. Aktualisieren Sie die Werte mit den entsprechenden Anwendungs-IDs und geheimen Schlüsseln. Verwenden Sie für Ihre primäre Anwendung "Zertifikat" als geheimen Webanwendungsschlüssel anstelle einfacher geheimer Schlüssel, da sie 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/" />