Tutorial zum Konfigurieren von Azure Active Directory B2C mit Strata

In diesem Tutorial erfahren Sie, wie Sie Azure Active Directory B2C (Azure AD B2C) in Strata Maverics Identity Orchestrator integrieren, um lokale Anwendungen zu schützen. Maverics Identity Orchestrator stellt eine Verbindung mit Identitätssystemen her, migriert Benutzer und Anmeldeinformationen transparent, synchronisiert Richtlinien und Konfigurationen und abstrahiert die Authentifizierung und Sitzungsverwaltung. Mithilfe von Strata können Sie von Legacyanwendungen auf Azure AD B2C umsteigen, ohne Anwendungen neu schreiben zu müssen.

Diese Lösung hat die folgenden Vorteile:

  • Einmaliges Anmelden (Single Sign-On, SSO) von Kunden bei lokalen Hybrid-Apps: Azure AD B2C unterstützt das einmalige Anmelden von Kunden mit Maverics Identity Orchestrator.
    • Benutzer melden sich mit Konten an, die in Azure AD B2C oder einem Identitätsanbieter (Identity Provider, IdP) gehostet werden.
    • Maverics stellt Apps SSO bereit, die in der Vergangenheit durch Legacyidentitätssysteme wie Symantec SiteMinder geschützt wurden.
  • Erweitern des standardmäßigen einmaligen Anmeldens auf Apps: Sie können Azure AD B2C verwenden, um den Benutzerzugriff zu verwalten und einmaliges Anmelden mit Maverics Identity Orchestrator Security Assertion Markup Language (SAML)- oder OIDC-Connectors (OpenID Connect) zu aktivieren.
  • Einfache Konfiguration: Verbinden Sie Maverics Identity Orchestrator SAML- oder OIDC-Connectors mit Azure AD B2C.

Voraussetzungen

Zunächst benötigen Sie Folgendes:

  • Ein Azure-Abonnement

  • Einen Azure AD B2C-Mandanten, der mit Ihrem Azure-Abonnement verknüpft ist.
  • Eine Instanz von Azure Key Vault zum Speichern von Geheimnissen, die von Maverics Identity Orchestrator verwendet werden. Stellen Sie eine Verbindung mit Azure AD B2C oder anderen Attributanbietern (z. B. mit einem LDAP-Verzeichnis (Lightweight Directory Access Protocol) oder einer Datenbank) her.
  • Eine Instanz von Maverics Identity Orchestrator, die auf einem virtuellen Azure-Computer oder auf einem lokalen Server ausgeführt wird. Um Software und Dokumentation zu erhalten, wechseln Sie zu strata.io Strata Identity kontaktieren.
  • Eine lokale Anwendung für die Umstellung auf Azure AD B2C

Beschreibung des Szenarios

Maverics Identity Orchestrator-Integration umfasst die folgenden Komponenten:

  • Azure AD B2C: Der Autorisierungsserver zum Überprüfen von Benutzeranmeldeinformationen.
    • Authentifizierte Benutzer greifen auf lokale Apps mit einem lokalen Konto im Azure AD B2C-Verzeichnis zu.
  • Externer sozialer Netzwerk- oder Unternehmensidentitätsanbieter (IdP): Ein OIDC-Anbieter, Facebook, Google oder GitHub.
  • Maverics Identity Orchestrator von Strata: Der Dienst für die Benutzeranmeldung, der die Identität über HTTP-Header an Apps übergibt.

Im folgenden Architekturdiagramm ist die Implementierung dargestellt.

Diagramm der Azure AD B2C-Integrationsarchitektur mit Maverics Identity Orchestrator für den Zugriff auf Hybrid-Apps.

  1. Der Benutzer fordert Zugriff auf die lokale gehostete Anwendung an. Maverics Identity Orchestrator sendet die Anforderung als Proxy an die Anwendung.
  2. Der Orchestrator überprüft den Zustand der Benutzerauthentifizierung. Wenn kein Sitzungstoken vorhanden oder das Token ungültig ist, wechselt der Benutzer für die Authentifizierung zu Azure AD B2C.
  3. Azure AD B2C sendet die Authentifizierungsanforderung an den konfigurierten sozialen IdP.
  4. Der IdP fordert den Benutzer zur Eingabe von Anmeldeinformationen heraus. Möglicherweise ist Multi-Faktor-Authentifizierung (MFA) erforderlich.
  5. Der IdP sendet die Authentifizierungsantwort an Azure AD B2C. Der Benutzer kann ein lokales Konto im Azure AD B2C-Verzeichnis erstellen.
  6. Azure AD B2C sendet die Benutzeranforderung an den Endpunkt, der während der Registrierung der Orchestrator-App im Azure AD B2C-Mandanten angegeben wurde.
  7. Der Orchestrator wertet Zugriffsrichtlinien und Attributwerte für HTTP-Header aus, die an die App weitergeleitet werden. Orchestrator kann andere Attributanbieter aufrufen, um Informationen zum Festlegen der Headerwerte abzurufen. Der Orchestrator sendet die Anforderung an die App.
  8. Der Benutzer wird authentifiziert und erhält Zugriff auf die App.

Maverics Identity Orchestrator

Um Software und Dokumentation zu erhalten, wechseln Sie zu strata.io Strata Identity kontaktieren. Bestimmen der Voraussetzungen für den Orchestrator. Installieren und Konfigurieren.

Konfigurieren Ihres Azure AD B2C-Mandanten

Dokumentieren Sie Folgendes, während Sie die folgenden Anweisungen ausführen:

  • Mandantenname und -bezeichner
  • Client-ID
  • Geheimer Clientschlüssel
  • Konfigurierte Ansprüche
  • Umleitungs-URI
  1. Registrieren einer Webanwendung in Azure Active Directory B2C im Azure AD B2C-Mandanten.
  2. Erteilen Sie Ihren Anwendungen Microsoft Graph-API-Berechtigungen. Verwenden Sie Berechtigungen: offline_access, openid.
  3. Fügen Sie einen Umleitungs-URI hinzu, der mit dem oauthRedirectURL Parameter der Konfiguration des Orchestrator Azure AD B2C-Connectors übereinstimmt, z. B. https://example.com/oidc-endpoint.
  4. Erstellen Sie Benutzerflows und benutzerdefinierte Richtlinien in Azure Active Directory B2C.
  5. Hinzufügen eines Identitätsanbieters zu Ihrem Azure Active Directory B2C-Mandanten. Melden Sie Ihren Benutzer mit einem lokalen Konto oder einem sozialen Netzwerk- oder Unternehmenskonto an.
  6. Definieren Sie die Attribute, die während der Registrierung gesammelt werden sollen.
  7. Geben Sie Attribute an, die über Ihre Orchestrator-Instanz an die Anwendung zurückgegeben werden sollen.

Hinweis

Der Orchestrator nutzt Attribute aus von Azure AD B2C zurückgegebenen Ansprüchen und kann Attribute aus verbundenen Identitätssystemen (z. B. aus LDAP-Verzeichnissen und Datenbanken) abrufen. Diese Attribute befinden sich in HTTP-Headern und werden an die lokale Upstreamanwendung gesendet.

Konfigurieren von Maverics Identity Orchestrator

Verwenden Sie die Anweisungen in den folgenden Abschnitten, um eine Orchestrator-Instanz zu konfigurieren.

Serveranforderungen von Maverics Identity Orchestrator

Sie können Ihre Orchestrator-Instanz auf jedem beliebigen Server – lokal oder in einer öffentlichen Cloudinfrastruktur eines Anbieters wie Azure, AWS oder GCP – ausführen.

  • Betriebssystem: REHL 7.7 oder höher, CentOS 7+
  • Datenträger: 10 GB (klein)
  • Arbeitsspeicher: 16 GB
  • Ports: 22 (SSH/SCP), 443, 80
  • Stammzugriff: Für Installations-/Verwaltungsaufgaben
  • Maverics Identity Orchestrator: Wird als Benutzer maverics unter systemd ausgeführt.
  • Ausgehender Netzwerkdatenverkehr: Von dem Server, auf dem Maverics Identity Orchestrator gehostet wird, der Ihren Microsoft Entra-Mandanten erreichen kann.

Installieren von Maverics Identity Orchestrator

  1. Rufen Sie das aktuelle Maverics-RPM-Paket ab.

  2. Legen Sie das Paket auf dem System ab, auf dem Sie Maverics installieren möchten. Wenn Sie auf einen Remotehost kopieren, verwenden Sie SSH scp.

  3. Führen Sie den folgenden Befehl aus. Verwenden Sie Ihren Dateinamen, um maverics.rpm zu ersetzen.

    sudo rpm -Uvf maverics.rpm

    Maverics befindet sich standardmäßig im Verzeichnis /usr/local/bin.

  4. Maverics wird als Dienst unter systemd ausgeführt.

  5. Führen Sie den folgenden Befehl aus, um sich zu vergewissern, dass der Maverics-Dienst ausgeführt wird:

    sudo service maverics status

  6. Die folgende Meldung (oder eine ähnliche) wird angezeigt.

Redirecting to /bin/systemctl status maverics.service
  maverics.service - Maverics
  Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
  Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
  Main PID: 330772 (maverics)
  Tasks: 5 (limit: 11389)
  Memory: 14.0M
  CGroup: /system.slice/maverics.service
          └─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml

Hinweis

Wenn Maverics nicht starten kann, führen Sie den folgenden Befehl aus:

journalctl --unit=maverics.service --reverse

Der jüngste Protokolleintrag wird in der Ausgabe angezeigt.

  1. Die Standarddatei maverics.yaml wird im Verzeichnis /etc/maverics erstellt.
  2. Konfigurieren Sie Ihren Orchestrator, um die Anwendung zu schützen.
  3. Integrieren in Azure AD B2C und Speichern.
  4. Rufen Sie Geheimnisse aus Azure Key Vault ab.
  5. Definieren Sie den Speicherort, von dem der Orchestrator seine Konfiguration liest.

Angeben der Konfiguration mithilfe von Umgebungsvariablen

Konfigurieren Sie Ihre Orchestrator-Instanzen mit Umgebungsvariablen.

MAVERICS_CONFIG

Diese Umgebungsvariable teilt der Orchestrator-Instanz mit, welche YAML-Konfigurationsdateien verwendet werden sollen und wo diese während des Starts oder Neustarts zu finden sind. Legen Sie die Umgebungsvariable in /etc/maverics/maverics.env fest.

Erstellen der TLS-Konfiguration des Orchestrators

Das Feld tls in maverics.yaml deklariert die Transport Layer Security-Konfigurationen (TLS), die von Ihrer Orchestrator-Instanz verwendet werden. Connectors verwenden TLS-Objekte und den Orchestrator-Server.

Der Schlüssel maverics ist für den Orchestrator-Server reserviert. Verwenden Sie andere Schlüssel, um ein TLS-Objekt in einen Connector einzufügen.

tls:
  maverics:
    certFile: /etc/maverics/maverics.cert
    keyFile: /etc/maverics/maverics.key

Konfigurieren des Azure AD B2C-Connectors

Orchestratoren verwenden Connectors zum Integrieren von Authentifizierungs- und Attributanbietern. Das App-Gateway des Orchestrators verwendet den Azure AD B2C-Connector als Authentifizierungs- und Attributanbieter. Azure AD B2C verwendet den sozialen IdP für die Authentifizierung und stellt dann dem Orchestrator Attribute bereit, die in Ansprüchen übergeben werden, die in HTTP-Headern festgelegt sind.

Die Konfiguration des Connectors entspricht der im Azure AD B2C-Mandanten registrierten App.

  1. Kopieren Sie aus Ihrer App-Konfiguration die Client-ID, den geheimen Clientschlüssel und den Umleitungs-URI in Ihren Mandanten.
  2. Geben Sie einen Connectornamen ein (Beispiel: azureADB2C).
  3. Legen Sie den Connector type auf azure fest.
  4. Notieren Sie sich den Connectornamen. Sie verwenden diesen Wert noch in anderen Konfigurationsparametern.
  5. Legen Sie authType auf oidc fest.
  6. Legen Sie für den Parameter oauthClientID die Client-ID fest, die Sie kopiert haben.
  7. Legen Sie für den Parameter oauthClientSecret den geheimen Clientschlüssel fest, den Sie kopiert haben.
  8. Legen Sie für den Parameter oauthRedirectURL den Umleitungs-URI fest, den Sie kopiert haben.
  9. Der Azure AD B2C OIDC-Connector verwendet den OIDC-Endpunkt zum Ermitteln von Metadaten, einschließlich URLs und Signaturschlüsseln. Verwenden Sie oidcWellKnownURL als Mandantenendpunkt.
connectors:
  name: azureADB2C
  type: azure
  oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
  oauthRedirectURL: https://example.com/oidc-endpoint
  oauthClientID: <azureADB2CClientID>
  oauthClientSecret: <azureADB2CClientSecret>
  authType: oidc

Definieren von Azure AD B2C als Authentifizierungsanbieter

Ein Authentifizierungsanbieter bestimmt die Authentifizierung für Benutzer, die während einer App-Ressourcenanforderung keine gültige Sitzung präsentieren. Die Azure AD B2C-Mandantenkonfiguration bestimmt, wie Benutzer für Anmeldeinformationen herausgefordert werden, während andere Authentifizierungsrichtlinien angewendet werden. Ein Beispiel wäre, einen zweiten Faktor zum Abschließen der Authentifizierung zu verlangen und zu entscheiden, was nach der Authentifizierung an das Orchestrator App Gateway zurückgegeben wird.

Der Wert für den authProvider muss dem name Ihres Connectors entsprechen.

authProvider: azureADB2C

Schützen lokaler Apps mit einem Orchestrator App Gateway

Die Konfiguration des Orchestrator App Gateways deklariert, wie Azure AD B2C Ihre Anwendung schützt und wie Benutzer auf die App zugreifen.

  1. Geben Sie einen App Gateway-Namen ein.
  2. Legen Sie die location fest. In diesem Beispiel wird der App-Stamm / verwendet.
  3. Definieren Sie die geschützte Anwendung in upstream. Verwenden Sie die „Host:Port“-Konvention: https://example.com:8080.
  4. Legen Sie die Werte für Fehler- und nicht autorisierte Seiten fest.
  5. Definieren Sie die HTTP-Headernamen und Attributwerte für die Anwendung, um Authentifizierung und Kontrolle einzurichten. Headernamen entsprechen in der Regel der App-Konfiguration. Attributwerte sind dem Namespace des Connectors zugeordnet. In dem Beispiel wird Werten, die von Azure AD B2C zurückgegeben werden, der Connectorname azureADB2C vorangestellt (Präfix). Das Suffix ist der Attributname mit dem erforderlichen Wert, z. B given_name.
  6. Legen Sie die Richtlinien fest. Es sind drei Aktionen definiert: allowUnauthenticated, allowAnyAuthenticated und allowIfAny. Jede Aktion ist einer resource zugeordnet. Die Richtlinie wird für diese resource ausgewertet.

Hinweis

headers und policies verwenden JavaScript- oder GoLang-Diensterweiterungen, um beliebige Logik zu implementieren.

appgateways:
  - name: Sonar
    location: /
    upstream: https://example.com:8080
    errorPage: https://example.com:8080/sonar/error
    unauthorizedPage: https://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

Azure Key Vault als Geheimnisanbieter

Schützen Sie die Geheimnisse, die Ihr Orchestrator zum Herstellen der Verbindung mit Azure AD B2C und anderen Identitätssystemen verwendet. Maverics lädt Geheimnisse im Nur-Text-Format aus maverics.yaml. In diesem Tutorial verwenden Sie jedoch Azure Key Vault als Geheimnisanbieter.

Befolgen Sie die Anweisungen im Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe des Azure-Portals. Fügen Sie Ihre Geheimnisse dem Tresor hinzu, und notieren Sie sich den SECRET NAME für jedes Geheimnis. Beispiel: AzureADB2CClientSecret.

Wenn Sie einen Wert in einer Konfigurationsdatei (maverics.yaml) als Geheimnis deklarieren möchten, umschließen Sie ihn mit spitzen Klammern:

connectors:
  - name: AzureADB2C
    type: azure
    oauthClientID: <AzureADB2CClientID>
    oauthClientSecret: <AzureADB2CClientSecret>

Der in spitzen Klammern angegebene Wert muss dem SECRET NAME entsprechen, der einem Geheimnis in Ihrem Azure Key Vault zugewiesen ist.

Wenn Sie Geheimnisse aus Azure Key Vault laden möchten, legen Sie in der Datei /etc/maverics/maverics.env die Umgebungsvariable MAVERICS_SECRET_PROVIDER mit den Anmeldeinformationen aus der Datei „azure-credentials.json“ fest. Verwenden Sie hierzu das folgende Muster:

MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'

Abschließen der Konfiguration

Die folgenden Informationen veranschaulichen, wie die Orchestrator-Konfiguration aussieht.

version: 0.4.2
listenAddress: ":443"
tls:
  maverics:
    certFile: certs/maverics.crt
    keyFile: certs/maverics.key

authProvider: azureADB2C

connectors:
  - name: azureADB2C
    type: azure
    oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
    oauthRedirectURL: https://example.com/oidc-endpoint
    oauthClientID: <azureADB2CClientID>
    oauthClientSecret: <azureADB2CClientSecret>
    authType: oidc

appgateways:
  - name: Sonar
    location: /
    upstream: http://example.com:8080
    errorPage: http://example.com:8080/sonar/accessdenied
    unauthorizedPage: http://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

Testen des Flows

  1. Navigieren Sie zur URL der lokalen Anwendung, https://example.com/sonar/dashboard.
  2. Der Orchestrator leitet zur Seite „Benutzerflow“ um.
  3. Wählen Sie in der Liste den Identitätsanbieter aus.
  4. Geben Sie Anmeldeinformationen einschließlich eines MFA-Tokens ein, wenn dies vom IdP angefordert wird.
  5. Sie werden zu Azure AD B2C umgeleitet, das die App-Anforderung an den Umleitungs-URI des Orchestrators weiterleitet.
  6. Der Orchestrator wertet Richtlinien aus und berechnet Header.
  7. Die angeforderte Anwendung wird angezeigt.

Nächste Schritte