Authentifizierung und Autorisierung bei Azure Spatial Anchors

In diesem Artikel erfahren Sie mehr über die verschiedenen Möglichkeiten, wie Sie sich aus Ihrer App oder Ihren Webdienst bei Azure Spatial Anchors authentifizieren können. Außerdem erfahren Sie mehr über die Möglichkeiten, wie Sie azure role-based access control (Azure RBAC) in Microsoft Entra ID verwenden können, um den Zugriff auf Ihre Spatial Anchors-Konten zu steuern.

Warnung

Wir empfehlen, dass Sie Kontoschlüssel für ein schnelles Onboarding verwenden, allerdings nur in den Phasen der Entwicklung und der Prototyperstellung. Es wird nicht empfohlen, Ihre Anwendung mit einem darin eingebetteten Kontoschlüssel an die Produktion auszuliefern. Verwenden Sie stattdessen die als Nächstes beschriebenen benutzerbasierten oder dienstbasierten Microsoft Entra-Authentifizierungsansätze.

Überblick

Diagram that shows an overview of authentication to Azure Spatial Anchors.

Um auf ein bestimmtes Azure Spatial Anchors-Konto zuzugreifen, müssen Clients zuerst ein Zugriffstoken aus dem Azure Mixed Reality-Sicherheitstokendienst (Security Token Service, STS) abrufen. Von STS abgerufene Token haben eine Gültigkeitsdauer von 24 Stunden. Sie enthalten Informationen, mit denen Spatial Anchors-Dienste Autorisierungsentscheidungen für ein Konto treffen können. Diese Informationen stellen sicher, dass nur autorisierte Prinzipale auf das Konto zugreifen können.

Zugriffstoken können im Austausch für Kontoschlüssel oder Token abgerufen werden, die von der Microsoft Entra-ID ausgestellt wurden.

Kontoschlüssel ermöglichen Ihnen den schnellen Einstieg in die Verwendung des Azure Spatial Anchors-Diensts. Bevor Sie Ihre Anwendung jedoch in der Produktion bereitstellen, sollten Sie Ihre App so aktualisieren, dass sie die Microsoft Entra-Authentifizierung verwendet.

Sie können Microsoft Entra-Authentifizierungstoken auf zwei Arten abrufen:

  • Wenn Sie eine Unternehmensanwendung erstellen und Ihr Unternehmen Microsoft Entra ID als Identitätssystem verwendet, können Sie die benutzerbasierte Microsoft Entra-Authentifizierung in Ihrer App verwenden. Anschließend gewähren Sie Mithilfe Ihrer vorhandenen Microsoft Entra-Sicherheitsgruppen Zugriff auf Ihre Spatial Anchors-Konten. Sie können Benutzern in Ihrer Organisation Zugriff auch direkt gewähren.
  • Andernfalls wird empfohlen, Microsoft Entra-Token von einem Webdienst abzurufen, der Ihre App unterstützt. Wir empfehlen diese Methode für Produktionsanwendungen, weil diese es Ihnen ermöglicht, die Einbettung der Anmeldeinformationen für den Zugriff auf Azure Spatial Anchors in Ihre Clientanwendung zu vermeiden.

Kontoschlüssel

Die einfachste Möglichkeit für den Einstieg besteht in der Verwendung von Kontoschlüsseln für den Zugriff auf Ihr Azure Spatial Anchors-Konto. Ihre Kontoschlüssel können Sie im Azure-Portal abrufen. Wechseln Sie zu Ihrem Konto, und wählen Sie die Registerkarte Schlüssel aus:

Screenshot that shows the Keys tab with the Copy button for the Primary key highlighted.

Zwei Schlüssel sind verfügbar. Beide sind gleichzeitig für den Zugriff auf das Spatial Anchors-Konto gültig. Wir empfehlen, dass Sie den Schlüssel, den Sie für den Zugriff auf das Konto verwenden, regelmäßig aktualisieren. Wenn zwei separate gültige Schlüssel vorhanden sind, können Sie diese Updates ohne Ausfallzeiten vornehmen. Sie müssen nur den Primärschlüssel aktualisieren und den sekundären ersatzweise.

Das SDK verfügt über integrierte Unterstützung für die Authentifizierung mittels Kontoschlüsseln. Sie müssen nur die AccountKey-Eigenschaft für Ihr cloudSession-Objekt festlegen:

this.cloudSession.Configuration.AccountKey = @"MyAccountKey";

Nachdem Sie diese Eigenschaft festgelegt haben, verarbeitet das SDK den Austausch des Kontoschlüssels gegen ein Zugriffstoken und die notwendige Zwischenspeicherung der Token für Ihre App.

Microsoft Entra-Benutzerauthentifizierung

Für Anwendungen, die für Microsoft Entra-Benutzer bestimmt sind, empfehlen wir, ein Microsoft Entra-Token für den Benutzer zu verwenden. Sie können dieses Token mithilfe der MSAL abrufen. Führen Sie die Schritte in der Schnellstartanleitung zum Registrieren einer Appaus. Hierzu gehören:

Im Azure-Portal

  1. Registrieren Sie Ihre Anwendung in der Microsoft Entra-ID als systemeigene Anwendung. Im Rahmen der Registrierung müssen Sie festlegen, ob Ihre Anwendung mehrinstanzenfähig sein soll. Außerdem müssen Sie die Umleitungs-URLs angeben, die für Ihre Anwendung zulässig sind.

  2. Wechseln Sie zur Registerkarte API-Berechtigungen.

  3. Wählen Sie Berechtigung hinzufügen aus.

    1. Wählen Sie auf der Registerkarte Von meiner Organisation verwendete APIs die Option Mixed Reality-Ressourcenanbieter aus.
    2. Wählen Sie Delegierte Berechtigungen aus.
    3. Wählen Sie mixedreality.signin unter mixedreality aus.
    4. Wählen Sie Berechtigungen hinzufügen aus.
  4. Wählen Sie Administratoreinwilligung erteilen aus.

  5. Weisen Sie der Anwendung oder den Benutzern, denen Sie Zugriff auf Ihre Ressource gewähren möchten, eine ASA RBAC-Rolle zu. Wenn Die Benutzer Ihrer Anwendung unterschiedliche Rollen für das ASA-Konto haben sollen, registrieren Sie mehrere Anwendungen in der Microsoft Entra-ID, und weisen Sie jedem benutzer eine separate Rolle zu. Implementieren Sie dann Ihre Autorisierungslogik, damit die richtige Rolle für Ihre Benutzer verwendet wird. Ausführliche Informationen zu Rollenzuweisungsschritten finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

In Ihrem Code

  1. Achten Sie darauf, die Anwendungs-ID und den Umleitungs-URI Ihrer eigenen Microsoft Entra-Anwendung für die Parameter Client-ID und RedirectUri in MSAL zu verwenden.
  2. Festlegen der Mandanteninformationen:
    1. Wenn Ihre Anwendung Nur meine Organisation unterstützt, ersetzen Sie diesen Wert durch die Mandanten-ID oder den Mandantennamen. Beispiel: „contoso.microsoft.com“.
    2. Wenn Ihre Anwendung Konten in einem beliebigen Organisationsverzeichnis unterstützt, ersetzen Sie diesen Wert durch Organizations (Organisationen).
    3. Wenn Ihre Anwendung Alle Microsoft-Kontobenutzer unterstützt, ersetzen Sie diesen Wert durch Common (Allgemein).
  3. Legen Sie in Ihrer Tokenanforderung den Bereich auf https://sts.mixedreality.azure.com//.default fest. Dieser Bereich gibt an, dass Ihre Anwendung ein Token für den Mixed Reality Security Token Service (STS) anfordert.

Nachdem Sie diese Schritte ausgeführt haben, sollte Ihre Anwendung in der Lage sein, von MSAL ein Microsoft Entra-Token abzurufen. Sie können dieses Microsoft Entra-Token als das authenticationToken Konfigurationsobjekt ihrer Cloudsitzung festlegen:

this.cloudSession.Configuration.AuthenticationToken = @"MyAuthenticationToken";

Microsoft Entra-Dienstauthentifizierung

Um Apps, die Azure Spatial Anchors verwenden, in der Produktion bereitzustellen, empfehlen wir, dass Sie einen Back-End-Dienst als Broker für Authentifizierungsanforderungen verwenden. Übersicht über den Prozess:

Diagram that provides an overview of authentication to Azure Spatial Anchors.

Hier wird davon ausgegangen, dass Ihre App einen eigenen Mechanismus zur Authentifizierung ihres Back-End-Diensts verwendet. (Beispielsweise ein Microsoft-Konto, PlayFab, Facebook, eine Google-ID oder einen benutzerdefinierten Benutzernamen und ein Kennwort.) Nachdem Ihre Benutzer bei Ihrem Back-End-Dienst authentifiziert wurden, kann dieser Dienst ein Microsoft Entra-Token abrufen, es für ein Zugriffstoken für Azure Spatial Anchors austauschen und zurück an Ihre Clientanwendung zurückgeben.

Das Microsoft Entra-Zugriffstoken wird über msAL abgerufen. Befolgen Sie die Schritte im Schnellstart zum Registrieren einer App, einschließlich der folgenden:

Im Azure-Portal

  1. Registrieren Sie Ihre Anwendung in der Microsoft Entra-ID:
    1. Wählen Sie im Azure-Portal die Microsoft Entra-ID und dann App-Registrierungen aus.
    2. Wählen Sie Neue Registrierung aus.
    3. Geben Sie den Namen Ihrer Anwendung ein, wählen Sie Web-App/API als Anwendungstyp aus, und geben Sie die Authentifizierungs-URL für Ihren Dienst ein. Wählen Sie Erstellen aus.
  2. Wählen Sie in der Anwendung Einstellungen und dann die Registerkarte "Zertifikate und geheime Schlüssel" aus. Erstellen Sie einen neuen geheimen Clientschlüssel, wählen Sie eine Dauer und dann "Hinzufügen" aus. Stellen Sie sicher, dass Sie den Geheimniswert speichern. Sie müssen diesen in den Code Ihres Webdiensts aufnehmen.
  3. Weisen Sie der Anwendung oder den Benutzern, denen Sie Zugriff auf Ihre Ressource gewähren möchten, eine ASA RBAC-Rolle zu. Wenn Die Benutzer Ihrer Anwendung unterschiedliche Rollen für das ASA-Konto haben sollen, registrieren Sie mehrere Anwendungen in der Microsoft Entra-ID, und weisen Sie jedem benutzer eine separate Rolle zu. Implementieren Sie dann Ihre Autorisierungslogik, damit die richtige Rolle für Ihre Benutzer verwendet wird. Ausführliche Informationen zu Rollenzuweisungsschritten finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

In Ihrem Code

Hinweis

Sie können das Dienstbeispiel verwenden, das als Teil der Spatial Anchor-Beispiel-Apps verfügbar ist.

  1. Achten Sie darauf, dass Sie die Anwendungs-ID, den geheimen Anwendungsschlüssel und den Umleitungs-URI Ihrer eigenen Microsoft Entra-Anwendung als Client-ID, geheime und RedirectUri-Parameter in MSAL verwenden.
  2. Legen Sie die Mandanten-ID auf Ihre eigene Microsoft Entra-Mandanten-ID im Autoritätsparameter in MSAL fest.
  3. Legen Sie in Ihrer Tokenanforderung den Bereich auf https://sts.mixedreality.azure.com//.default fest.

Nachdem Sie diese Schritte ausgeführt haben, kann Ihr Back-End-Dienst ein Microsoft Entra-Token abrufen. Der Dienst kann dieses Token gegen ein MR-Token austauschen, das er dann an den Client zurückgibt. Die Verwendung eines Microsoft Entra-Tokens zum Abrufen eines MR-Tokens erfolgt über einen REST-Aufruf. Hier sehen Sie einen Beispielaufruf:

GET https://sts.mixedreality.azure.com/Accounts/35d830cb-f062-4062-9792-d6316039df56/token HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni<truncated>FL8Hq5aaOqZQnJr1koaQ
Host: sts.mixedreality.azure.com
Connection: Keep-Alive

HTTP/1.1 200 OK
Date: Sun, 24 Feb 2019 08:00:00 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1153
Accept: application/json
MS-CV: 05JLqWeKFkWpbdY944yl7A.0
{"AccessToken":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjI2MzYyMTk5ZTI2NjQxOGU4ZjE3MThlM2IyMThjZTIxIiwidHlwIjoiSldUIn0.eyJqdGkiOiJmMGFiNWIyMy0wMmUxLTQ1MTQtOWEzNC0xNzkzMTA1NTc4NzAiLCJjYWkiOiIzNWQ4MzBjYi1mMDYyLTQwNjItOTc5Mi1kNjMxNjAzOWRmNTYiLCJ0aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJhaWQiOiIzNWQ4MzBjYi1mMDYyLTQwNjItOTc5Mi1kNjMxNjAzOWRmNTYiLCJhYW8iOi0xLCJhcHIiOiJlYXN0dXMyIiwicmlkIjoiL3N1YnNjcmlwdGlvbnMvNzIzOTdlN2EtNzA4NC00ODJhLTg3MzktNjM5Y2RmNTMxNTI0L3Jlc291cmNlR3JvdXBzL3NhbXBsZV9yZXNvdXJjZV9ncm91cC9wcm92aWRlcnMvTWljcm9zb2Z0Lk1peGVkUmVhbGl0eS9TcGF0aWFsQW5jaG9yc0FjY291bnRzL2RlbW9fYWNjb3VudCIsIm5iZiI6MTU0NDU0NzkwMywiZXhwIjoxNTQ0NjM0MzAzLCJpYXQiOjE1NDQ1NDc5MDMsImlzcyI6Imh0dHBzOi8vbXJjLWF1dGgtcHJvZC50cmFmZmljbWFuYWdlci5uZXQvIiwiYXVkIjoiaHR0cHM6Ly9tcmMtYW5jaG9yLXByb2QudHJhZmZpY21hbmFnZXIubmV0LyJ9.BFdyCX9UJj0i4W3OudmNUiuaGgVrlPasNM-5VqXdNAExD8acFJnHdvSf6uLiVvPiQwY1atYyPbOnLYhEbIcxNX-YAfZ-xyxCKYb3g_dbxU2w8nX3zDz_X3XqLL8Uha-rkapKbnNgxq4GjM-EBMCill2Svluf9crDmO-SmJbxqIaWzLmlUufQMWg_r8JG7RLseK6ntUDRyDgkF4ex515l2RWqQx7cw874raKgUO4qlx0cpBAB8cRtGHC-3fA7rZPM7UQQpm-BC3suXqRgROTzrKqfn_g-qTW4jAKBIXYG7iDefV2rGMRgem06YH_bDnpkgUa1UgJRRTckkBuLkO2FvA"}

Der Autorisierungsheader ist hierbei als Bearer <Azure_AD_token> formatiert.

Die Antwort enthält das MR-Token im Klartext.

Dieses MR-Token wird an den Client zurückgegeben. Ihre Client-App kann dieses dann als Zugriffstoken in der Cloudsitzungskonfiguration festlegen:

this.cloudSession.Configuration.AccessToken = @"MyAccessToken";

Rollenbasierte Zugriffssteuerung in Azure

Um die Zugriffsebene zu steuern, die Anwendungen, Diensten oder Microsoft Entra-Benutzern Ihres Diensts gewährt wird, können Sie diese bereits vorhandenen Rollen nach Bedarf für Ihre Azure Spatial Anchors-Konten zuweisen:

  • Spatial Anchors-Kontobesitzer. Anwendungen oder Benutzer mit dieser Rolle können Raumanker erstellen, abfragen und löschen. Wenn Sie sich mit Kontoschlüsseln bei Ihrem Konto authentifizieren, wird dem authentifizierten Prinzipal die Rolle „Spatial Anchors-Kontobesitzer“ zugewiesen.
  • Spatial Anchors-Kontomitwirkender. Anwendungen oder Benutzer mit dieser Rolle können Raumanker erstellen, abfragen, aber nicht löschen.
  • Spatial Anchors-Kontoleser. Anwendungen oder Benutzer mit dieser Rolle können Raumanker nur abfragen. Sie können keine neuen erstellen, vorhandene löschen oder deren Metadaten aktualisieren. Diese Rolle wird in der Regel für Anwendungen verwendet, bei denen einige Benutzer die Umgebung zusammenstellen, während andere nur Anker zurückrufen können, die zuvor in dieser Umgebung platziert waren.

Nächste Schritte

Erstellen Sie Ihre erste App mit Azure Spatial Anchors:

iOS