Konfigurieren von Azure Active Directory B2C mit Akamai Enterprise Application Access für einmaliges Anmelden (SSO) und sicheren Hybridzugriff
In diesem Beispieltutorial erfahren Sie, wie Sie die Azure Active Directory B2C-Authentifizierung (Azure AD B2C) mit Akamai Enterprise Application Access integrieren. Akamai Enterprise Application Access ist eine ZTNA-Lösung (Zero Trust Network Access), die den sicheren Remotezugriff auf moderne und ältere Anwendungen in privaten Rechenzentren ermöglicht. Zum Authentifizieren von Benutzern bildet Akamai Enterprise Application Access einen Verbund mit Azure AD B2C als Identitätsanbieter (Identity Provider, IdP). Anschließend werden auf Basis der Autorisierungsrichtlinien fortlaufend Identität, Gerät, Anwendung und Anforderungskontext ausgewertet, bevor der Zugriff auf private Anwendungen gestattet wird.
Dieses Feature ist nur für benutzerdefinierte Richtlinien verfügbar. Wählen Sie für die Einrichtungsschritte in der vorherigen Auswahl die Option Benutzerdefinierte Richtlinie aus.
Voraussetzungen
Zunächst benötigen Sie Folgendes:
Ein Akamai Enterprise Access-Vertrag. Wenn Sie noch keinen Vertrag haben, können Sie eine kostenlose Testversion abrufen.
Ein Azure-Abonnement. Falls Sie über kein Abonnement verfügen, können Sie ein kostenloses Azure-Konto verwenden.
Einen Azure AD B2C-Mandanten, der mit Ihrem Azure-Abonnement verknüpft ist.
Eine virtuelle Appliance hinter der Firewall in Ihrem Rechenzentrum oder in hybriden Cloud-Umgebungen für die Bereitstellung des Akamai Enterprise Application Access-Connectors.
Eine Anwendung, die Header für die Authentifizierung verwendet. In diesem Beispiel verwenden Sie eine Anwendung mit den Headern docker header-demo-app.
ODER eine OIDC-Anwendung (OpenID Connect). In diesem Beispiel verwenden Sie eine ASP.NET MVC-Web-App, die Benutzer über die OWIN-Middleware (Open Web Interface for .NET) und Microsoft Identity Platform anmeldet.
Beschreibung des Szenarios
In diesem Szenario aktivieren Sie die Azure AD B2C-Authentifizierung für Endbenutzer, wenn diese versuchen, auf private Anwendungen zuzugreifen, die durch Akamai Enterprise Application Access geschützt sind.
Folgende Komponenten sind Bestandteil dieser Integration:
Azure AD B2C: SAML-Identitätsanbieter (IdP), der für die Authentifizierung von Endbenutzern verantwortlich ist.
Akamai Enterprise Application Access: ZTNA-Clouddienst, der mit kontinuierlicher ZTNA-Richtlinienerzwingung für den sicheren Zugriff auf private Anwendungen verantwortlich ist.
Akamai Enterprise Application Access-Connector: Eine virtuelle Appliance, die im privaten Rechenzentrum bereitgestellt wird. Sie ermöglicht eine sichere Verbindung mit privaten Apps, ohne dass Firewallports des Rechenzentrums für den eingehenden Datenverkehr geöffnet werden.
Anwendung: Im privaten Rechenzentrum bereitgestellte(r) Dienst oder Anwendung, auf den bzw. die Endbenutzer zugreifen müssen.
Der Benutzer authentifiziert sich bei Azure AD B2C (als SAML-IdP), das mit einer SAML-Assertion an Akamai Enterprise Application Access (den Dienstanbieter) antwortet. Akamai Enterprise Application Access ordnet Informationen aus der SAML-Assertion zu und erstellt OpenID-Ansprüche oder fügt HTTP-Header ein, die Informationen zu dem jeweiligen Benutzer enthalten. Akamai Enterprise Application Access übergibt diese dann an die Anwendung, auf die über den Akamai Enterprise Application Access-Connector zugegriffen werden kann. Im vorliegenden Beispiel wird in der Anwendung der Inhalt dieser Header angezeigt. Bei einer OIDC-Anwendung werden die Ansprüche des Benutzers angezeigt.
Das folgende Diagramm zeigt die Integration von Akamai Enterprise Application Access (EAA) mit Azure AD B2C.
Ein Endbenutzer versucht, mithilfe der externen URL der Anwendung, die in Akamai Enterprise Application Access registriert ist, auf eine im privaten Rechenzentrum gehostete Anwendung zuzugreifen.
Akamai Enterprise Application Access leitet den nicht authentifizierten Endbenutzer zur Authentifizierung an Azure AD B2C um.
Nach erfolgreicher Authentifizierung leitet Azure AD B2C den Benutzer mit einer SAML-Assertion zurück zu Akamai Enterprise Application Access.
Akamai Enterprise Application Access verwendet die Identitätsinformationen aus der SAML-Assertion, um den Benutzer zu identifizieren und zu ermitteln, ob dieser auf die angeforderte Anwendung zugreifen darf.
Akamai Enterprise Application Access erstellt OIDC-Ansprüche oder fügt HTTP-Header ein, die an die Anwendung gesendet werden.
Die Anwendung verwendet diese Informationen, um den authentifizierten Benutzer zu identifizieren, und erstellt eine Anwendungssitzung für den Endbenutzer.
Onboarding mit Akamai Enterprise Application Access
Informationen zu den ersten Schritten mit Akamai Enterprise Application Access finden Sie im Leitfaden „Erste Schritte mit Akamai Enterprise Application Access“.
Schritt 1: Hinzufügen von Azure AD B2C als SAML-IdP in Akamai Enterprise Application Access
Akamai Enterprise Application Access unterstützt den SAML-Verbund mit Cloud-Identitätsanbietern (IdPs) wie Azure AD B2C. Fügen Sie Azure AD B2C als Drittanbieter-SAML-IdP in Akamai Enterprise Application Access hinzu.
Melden Sie sich im Enterprise Center https://control.akamai.com/ an.
Wählen Sie im Enterprise Center im Navigationsmenü Anwendungszugriff > Identität & Benutzer > Identitätsanbieter aus.
Wählen Sie Identitätsanbieter hinzufügen (+) aus.
Geben Sie einen Namen und eine Beschreibung ein, und wählen Sie Drittanbieter-SAML als Anbietertyp aus.
Wählen Sie Weiter. Die Seite für die Konfiguration des Identitätsanbieters wird geöffnet.
Geben Sie unter Einstellungen>Allgemein eine URL für den Identitätsserver ein. Zur Auswahl stehen Akamai-Domäne verwenden oder „Ihre Domäne verwenden“. Bei Angabe Ihrer eigenen Domäne verwenden Sie ein selbstsigniertes Zertifikat oder das hochgeladene benutzerdefinierte Zertifikat.
Geben Sie unter Authentifizierung dieselbe URL ein, die Sie im vorherigen Schritt unter „Allgemein“ definiert haben, und wählen Sie Speichern aus.
Schritt 2: Registrieren einer SAML-Anwendung in Azure AD B2C
Holen Sie sich die Starter Packs für benutzerdefinierte Richtlinien-von GitHub, und aktualisieren Sie dann die XML-Dateien im Starter Pack „LocalAccounts“ mit dem Namen Ihres Azure AD B2C-Mandanten:
Laden Sie die ZIP-Datei herunter, oder klonen Sie das Repository:
git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
Ersetzen Sie in allen Dateien im Verzeichnis LocalAccounts die Zeichenfolge
yourtenant
durch den Namen Ihres Azure AD B2C-Mandanten. Wenn z. B. der Name des B2C-Mandantenfabrikam
lautet, werden alle Instanzen vonyourtenant.onmicrosoft.com
infabrikam.onmicrosoft.com
geändert.
Erstellen Sie ein Signaturzertifikat für Azure AD B2C, um die an Akamai Enterprise Application Access gesendete SAML-Antwort zu signieren:
a. Abrufen eines Zertifikats. Wenn Sie noch nicht über ein Zertifikat verfügen, können Sie ein selbstsigniertes Zertifikat verwenden.
b. Hochladen des Zertifikats in Ihren Azure AD B2C-Mandanten. Notieren Sie sich den Namen, da Sie ihn im
TechnicalProfile
, das in den nächsten Schritten erwähnt wird, benötigen.Aktivieren Sie Ihre Richtlinie für die Verbindung mit einer SAML-Anwendung.
a. Öffnen Sie
LocalAccounts\TrustFrameworkExtensions.xml
im Starter Pack für benutzerdefinierte Richtlinien. Suchen Sie nach dem Element ClaimsProviders. Wenn das Element nicht vorhanden ist, fügen Sie es unter dem StammelementTrustFrameworkPolicy
hinzu, und erweitern Sie es um den folgenden XML-Codeschnipsel, um Ihren SAML-Antwortgenerator zu implementieren:<ClaimsProvider> <DisplayName>Akamai</DisplayName> <TechnicalProfiles> <!-- SAML Token Issuer technical profile --> <TechnicalProfile Id="AkamaiSaml2AssertionIssuer"> <DisplayName>Token Issuer</DisplayName> <Protocol Name="SAML2" /> <OutputTokenFormat>SAML2</OutputTokenFormat> <Metadata> <Item Key="IssuerUri">https://<REPLACE>.login.go.akamai-access.com/saml/sp/response</Item> </Metadata> <CryptographicKeys> <Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_AkamaiSAMLSigningCert" /> <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_AkamaiSAMLSigningCert" /> </CryptographicKeys> <InputClaims /> <OutputClaims /> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuerAkamai" /> </TechnicalProfile> <!-- Session management technical profile for SAML-based tokens --> <TechnicalProfile Id="SM-Saml-issuerAkamai"> <DisplayName>Session Management Provider</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="IncludeSessionIndex">false</Item> <Item Key="RegisterServiceProviders">false</Item> </Metadata> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
b. Ersetzen Sie
issuerUri
durch die Akamai-URL, die Sie in Akamai Enterprise Application Access in Schritt 1 unter Einstellungen > Allgemein definiert haben.Beispiel:
<Item Key="IssuerUri">https://fabrikam.login.go.akamai-access.com/saml/sp/response</Item>
Ersetzen Sie B2C_1A_AkamaiSAMLSigningCert durch den Namen des hochgeladenen Richtlinienschlüssels.
Schritt 3: Erstellen einer für SAML konfigurierten Registrierungs- oder Anmelderichtlinie
Erstellen Sie eine Kopie der Datei
SignUpOrSignin.xml
im Arbeitsverzeichnis Ihres Starter Packs, und speichern Sie sie unter einem neuen Namen. In diesem Artikel wirdSignUpOrSigninSAML.xml
als Beispiel verwendet. Diese Datei ist Ihre Richtliniendatei für die vertrauende Seite. Sie ist so konfiguriert, dass standardmäßig eine JWT-Antwort ausgestellt wird.Öffnen Sie die Datei
SignUpOrSigninSAML.xml
in Ihrem bevorzugten Editor.Aktualisieren Sie
tenant-name
mit dem Namen Ihres Azure AD B2C-Mandanten, und ändern Sie die WertePolicyId
undPublicPolicyUri
der Richtlinie inB2C_1A_signup_signin_saml
undhttp://<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin_saml
.<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="tenant-name.onmicrosoft.com" PolicyId="B2C_1A_signup_signin_saml" PublicPolicyUri="http://<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin_saml">
Am Ende der User Journey enthält Azure AD B2C einen Schritt
SendClaims
. Dieser Schritt verweist auf das technische Profil des Tokenausstellers. Wenn anstelle der standardmäßigen JWT-Antwort eine SAML-Antwort ausgegeben werden soll, ändern Sie den SchrittSendClaims
so, dass auf das technische Profil des neuen SAML-Tokenausstellers (Saml2AssertionIssuer
) verwiesen wird.Fügen Sie den folgenden XML-Codeausschnitt direkt vor dem
<RelyingParty>
-Element hinzu. Unter der Annahme, dass Sie die Starter Packs für benutzerdefinierteLocalAccount
-Richtlinien verwenden, wird durch diesen XML-Code Schritt 4 der Orchestrierung in derSignUpOrSignIn
-User Journey überschrieben.Wenn Sie aus einem anderen Ordner im Starter Pack gestartet sind oder die User Journey durch Hinzufügen oder Entfernen von Orchestrierungsschritten angepasst haben, stellen Sie sicher, dass die Schrittnummer im
order
-Element dem in der User Journey für den Tokenausstellerschritt angegebenen Wert entspricht. In den anderen Starter Pack-Ordnern wird analog beispielsweise Schrittnummer 7 fürSocialAndLocalAccounts
, 6 fürSocialAccounts
und 9 fürSocialAndLocalAccountsWithMfa
verwendet.<UserJourneys> <UserJourney Id="SignUpOrSignIn"> <OrchestrationSteps> <OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="AkamaiSaml2AssertionIssuer"/> </OrchestrationSteps> </UserJourney> </UserJourneys>
Das Element der vertrauenden Seite bestimmt, welches Protokoll von Ihrer Anwendung verwendet wird. Der Standardwert lautet
OpenId
. DasProtocol
-Element muss inSAML
geändert werden. Die Ausgabeansprüche erstellen die Anspruchszuordnung für die SAML-Assertion.Ersetzen Sie das gesamte
<TechnicalProfile>
-Element im<RelyingParty>
-Element durch das folgende technische Profil-XML.<TechnicalProfile Id="PolicyProfile"> <DisplayName>PolicyProfile</DisplayName> <Protocol Name="SAML2"/> <OutputClaims> <OutputClaim ClaimTypeReferenceId="displayName" /> <OutputClaim ClaimTypeReferenceId="givenName" /> <OutputClaim ClaimTypeReferenceId="surname" /> <OutputClaim ClaimTypeReferenceId="email" DefaultValue="" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" /> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/> </OutputClaims> <SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/> </TechnicalProfile>
Die endgültige Richtliniendatei für die vertrauende Seite sollte wie der folgende XML-Code aussehen:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="fabrikam.onmicrosoft.com" PolicyId="B2C_1A_signup_signin_saml" PublicPolicyUri="http://fabrikam.onmicrosoft.com/B2C_1A_signup_signin_saml"> <BasePolicy> <TenantId>fabrikam.onmicrosoft.com</TenantId> <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> </BasePolicy> <UserJourneys> <UserJourney Id="SignUpOrSignIn"> <OrchestrationSteps> <OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="AkamaiSaml2AssertionIssuer"/> </OrchestrationSteps> </UserJourney> </UserJourneys> <RelyingParty> <DefaultUserJourney ReferenceId="SignUpOrSignIn" /> <TechnicalProfile Id="PolicyProfile"> <DisplayName>PolicyProfile</DisplayName> <Protocol Name="SAML2"/> <OutputClaims> <OutputClaim ClaimTypeReferenceId="displayName" /> <OutputClaim ClaimTypeReferenceId="givenName" /> <OutputClaim ClaimTypeReferenceId="surname" /> <OutputClaim ClaimTypeReferenceId="email" DefaultValue="" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" /> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/> </OutputClaims> <SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/> </TechnicalProfile> </RelyingParty> </TrustFrameworkPolicy>
Hinweis
Auf die gleiche Weise können Sie auch andere Arten von Flows implementieren (z. B. Flows für die Anmeldung, Kennwortzurücksetzung oder Profilbearbeitung).
Schritt 4: Hochladen Ihrer Richtlinie
Speichern Sie Ihre Änderungen, und laden Sie die Datei TrustFrameworkBase.xml
sowie die neuen Richtliniendateien TrustFrameworkExtensions.xml
und SignUpOrSigninSAML.xml
in das Azure-Portal hoch.
Melden Sie sich beim Azure-Portal an.
Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
Suchen Sie im Azure-Portal nach Azure AD B2C, und klicken Sie darauf.
Klicken Sie unter „Richtlinien“ auf Identity Experience Framework. Wählen Sie Benutzerdefinierte Richtlinie hochladen aus, und laden Sie dann die beiden geänderten Richtliniendateien in der folgenden Reihenfolge hoch:
- Die Basisdatei (z. B.
TrustFrameworkBase.xml
) - Die Erweiterungsrichtlinie (z. B.
TrustFrameworkExtensions.xml
) - Und dann die Richtlinie für die vertrauende Seite (z. B.
SignUpOrSigninSAML.xml
)
- Die Basisdatei (z. B.
Schritt 5: Herunterladen der SAML-Metadaten von Azure AD B2C als Identitätsanbieter
Nachdem die Richtliniendateien hochgeladen wurden, generiert Azure AD B2C das von der Anwendung zu verwendende SAML-Metadatendokument des Identitätsanbieters anhand der Konfigurationsinformationen. Das SAML-Metadatendokument enthält die Speicherorte von Diensten wie Anmelde- und Abmeldemethoden und Zertifikate.
Die Azure AD B2C-Richtlinienmetadaten sind unter der URL
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/samlp/metadata
verfügbar:Ersetzen Sie
<tenant-name>
durch den Namen des Azure AD B2C-Mandanten. Ersetzen Sie<policy-name>
durch den Namen (ID) der Richtlinie. Beispiel:https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/B2C_1A_signup_signin_saml/samlp/metadata
Laden Sie die SAML-Metadaten herunter, und speichern Sie sie lokal auf Ihrem Gerät. Dies ist beim folgenden Schritt erforderlich, um die Konfiguration in Akamai Enterprise Application Access abzuschließen.
Schritt 6: Registrieren der Akamai Enterprise Application Access-Anwendung in Azure AD B2C
Damit Azure AD B2C Akamai Enterprise Application Access als vertrauenswürdig einstuft, erstellen Sie eine Azure AD B2C-Anwendungsregistrierung. Die Registrierung enthält Konfigurationsinformationen, z. B. den Metadatenendpunkt der Anwendung.
Melden Sie sich beim Azure-Portal an.
Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
Wählen Sie im linken Menü die Option Azure AD B2C aus. Oder wählen Sie Alle Dienste aus, suchen Sie nach dem Eintrag Azure AD B2C, und wählen Sie ihn aus.
Wählen Sie App-Registrierungen aus, und wählen Sie dann Registrierung einer neuen Anwendung aus.
Geben Sie unter Name einen Namen für die Anwendung ein. Geben Sie beispielsweise Akamai B2C Enterprise Application Access ein.
Wählen Sie unter Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis (Nur B2C – einzelner Mandant) aus.
Wählen Sie unter Umleitungs-URI die Option Web aus, und geben Sie dann die Akamai-URL ein, die Sie in Akamai Enterprise Application Access in Schritt 1 unter Einstellungen\Allgemein definiert haben. Beispiel:
https://fabrikam.login.go.akamai-access.com/saml/sp/response
.Wählen Sie Registrieren.
Schritt 7: Konfigurieren der Akamai Enterprise Application Access-Anwendung in Azure AD B2C
Für SAML müssen Sie im Manifest der Anwendungsregistrierung mehrere Eigenschaften konfigurieren.
Navigieren Sie im Azure-Portal zu der Anwendungsregistrierung, die Sie in Schritt 3 erstellt haben.
Wählen Sie unter Verwalten die Option Manifest aus, um den Manifest-Editor zu öffnen. Ändern Sie dann die im folgenden Abschnitt beschriebenen Eigenschaften.
Hinzufügen des Bezeichners
Wenn die Akamai Enterprise Application Access-SAML-Anwendung eine Anforderung an Azure AD B2C richtet, enthält die SAML-Authentifizierungsanforderung das Attribut Issuer
. Der Wert dieses Attributs ist in der Regel mit dem Metadatenwert entityID
der Anwendung identisch. Azure AD B2C verwendet diesen Wert, um die Anwendungsregistrierung im Verzeichnis zu suchen und die Konfiguration zu lesen. Damit diese Suche erfolgreich ist, muss der identifierUri
im Anwendungsregistrierungsmanifest mit einem Wert aufgefüllt werden, der dem Attribut Issuer
entspricht.
Suchen Sie im Registrierungsmanifest nach dem Parameter identifierURIs
, und fügen Sie den Wert für IssuerURI hinzu, den Sie in Schritt 2 definiert haben (Azure AD B2C ClaimsProvider).
Beispiel:
"identifierUris": [
"https://fabrikam.login.go.akamai-access.com/saml/sp/response"
],
Dieser Wert entspricht dem Wert, der in den SAML-AuthN-Anforderungen für EntityId
bei der Anwendung konfiguriert ist, und dem entityID
-Wert in den Metadaten der Anwendung. Außerdem müssen Sie den Parameter accessTokenAcceptedVersion
suchen und den Wert auf 2
festlegen.
Wichtig
Wenn Sie accessTokenAcceptedVersion
nicht auf 2
aktualisieren, erhalten Sie eine Fehlermeldung mit dem Hinweis, dass eine überprüfte Domäne erforderlich ist.
Schritt 8: Konfigurieren von Authentifizierungseinstellungen für Azure AD B2C als Identitätsanbieter in Akamai Enterprise Application Access
Aktualisieren Sie Azure AD B2C als Identitätsanbieter in Akamai Enterprise Application Access mit Authentifizierungsinformationen (z. B. URLs der vertrauenden Seite).
Melden Sie sich im Enterprise Center https://control.akamai.com/ an.
Wählen Sie im Enterprise Center im Navigationsmenü Anwendungszugriff > Identität & Benutzer > Identitätsanbieter aus.
Wählen Sie den Namen des Identitätsanbieters aus, den Sie in Schritt 1 erstellt haben.
Laden Sie die SAML-Metadatendatei von Azure AD B2C hoch, die Sie in Schritt 5 heruntergeladen haben.
Wählen Sie Datei auswählen aus, um die Datei „metadata.xml“ hochzuladen.
Wählen Sie Speichern und bereitstellen aus.
Schritt 9: Bereitstellen von Akamai Enterprise Application Access-Connectors in Ihrem privaten Rechenzentrum
Um den Zugriff auf eine private Anwendung zu ermöglichen, stellen Sie mindestens einen Akamai Enterprise Application Access-Connector in dem privaten Rechenzentrum bereit, in dem sich Ihre Anwendung befindet. Stellen Sie sicher, dass der Connector Ihre private Anwendung erreichen kann und über ausgehenden Zugriff auf die Akamai Cloud verfügt.
Schritt 10: Definieren einer Zugriffsanwendung in Akamai Enterprise Application Access für die private Anwendung
Definieren und Bereitstellen einer Zugriffsanwendung in Akamai Enterprise Application Access.
Definieren der Zugriffsanwendung
Ordnen Sie die Anwendung der Definition des Azure AD B2C-Identitätsanbieters für Enterprise Application Access zu, die Sie in den vorherigen Schritten erstellt haben.
Konfigurieren Sie die anwendungsseitige Authentifizierung, um einmaliges Anmelden (Single Sign-On, SSO) in der privaten Anwendung zu aktivieren:
Option 1: HTTP-Header
In diesem Beispiel verwenden Sie eine Anwendung mit den Headern docker header-demo-app. Sobald die Anwendung in einer privaten Umgebung bereitgestellt wird und ein Connector auf die Anwendung zugreifen kann, erstellen Sie eine benutzerdefinierte Anwendung (Typ HTTP). Informationen hierzu finden Sie in der Akamai-Dokumentation Konfigurieren von benutzerdefinierten HTTP-Headern für eine Zugriffsanwendung.
- Wählen Sie unter „Authentifizierung“ Azure AD B2C als SAML-IdP aus, den Sie in den vorherigen Schritten erstellt haben.
- Ordnen Sie in der Anwendung im Abschnitt Erweitert den HTTP-Header den SAML-Attributen zu, die von Azure AD B2C nach erfolgreicher Authentifizierung in der SAML-Antwort ausgegeben wurden.
Beispiel:
Headername | attribute |
---|---|
ps-sso-first | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name |
ps-sso-last | http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname |
ps-sso-EmailAddress | emailaddress |
ps-sso-uid | objectId |
Testen Sie die Anwendung, indem Sie die Akamai-URL für die von Ihnen erstellte benutzerdefinierte Webanwendung (Typ HTTP) auswählen.
Option 2: OpenID Connect
In diesem Beispiel verwenden Sie eine ASP.NET MVC-Web-App, die Benutzer über die OWIN-Middleware (Open Web Interface for .NET) und Microsoft Identity Platform anmeldet.
Konfigurieren Sie im Azure AD B2C-SAML-IdP, den Sie in den vorherigen Schritten erstellt haben, das Bridging von OIDC zu SAML.
Erstellen Sie anhand der Anleitung unter Konfigurieren von OpenID Connect für eine Zugriffsanwendung eine benutzerdefinierte Anwendung (Typ HTTP).
Wählen Sie unter „Authentifizierung“ den Azure AD B2C-SAML-IdP aus, der in den vorherigen Schritten für die HTTP-Headeranwendung erstellt wurde.
Wählen Sie unter Erweitert die Option OpenID Connect 1.0 als Authentifizierungsmechanismus aus, und wählen Sie dann Speichern aus.
Die neue Registerkarte OpenID wird angezeigt. Kopieren Sie die Ermittlungs-URL, die später beim Konfigurieren der OWIN-Komponente zum Testen der Anwendung benötigt wird.
Definieren Sie im Abschnitt Ansprüche die Ansprüche, die Akamai für die OIDC-Anwendung ausgibt, wobei deren Werte den SAML-Attributen zugeordnet werden, die von Azure AD B2C nach erfolgreicher Authentifizierung in der SAML-Antwort bereitgestellt werden. Diese Ansprüche müssen den Definitionen zugeordnet werden, die Sie im vorherigen Schritt beim Konfigurieren des Bridgings von OIDC zu SAML im Azure AD B2C-SAML-IdP vorgenommen haben.
Ersetzen Sie die Startklasse durch den folgenden Code in der ASP.NET MVC-Web-App.
Mit diesen wenigen Änderungen wird die Autorisierungscodeflowgewährung konfiguriert. Der Autorisierungscode wird für Token am Tokenendpunkt für die Anwendung eingelöst, und die Metadatenadresse wird eingeführt, um den Ermittlungsendpunkt zum Abrufen von Metadaten von Akamai festzulegen.
public class Startup { // The Client ID is used by the application to uniquely identify itself to Azure AD. string clientId = System.Configuration.ConfigurationManager.AppSettings["ClientId"]; //App Client Secret to redeem the code for an access token string ClientSecret = System.Configuration.ConfigurationManager.AppSettings["ClientSecret"]; // RedirectUri is the URL where the user will be redirected to after they sign in. string redirectUri = System.Configuration.ConfigurationManager.AppSettings["RedirectUri"]; // PostLogoutRedirectUri is the URL where the user will be redirected to after they sign out string PostLogoutRedirectUri = System.Configuration.ConfigurationManager.AppSettings["PostLogoutRedirectUri"]; //Authority is the URL for authority string authority = System.Configuration.ConfigurationManager.AppSettings["Authority"]; //discovery endpoint for obtaining metadata string MetadataAddress = System.Configuration.ConfigurationManager.AppSettings["MetadataAddress"]; /// <summary> /// Configure OWIN to use OpenIdConnect /// </summary> /// <param name="app"></param> public void Configuration(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); app.UseCookieAuthentication(new CookieAuthenticationOptions()); app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions { // Sets the ClientId, authority, RedirectUri as obtained from web.config ClientId = clientId, Authority = authority, RedirectUri = redirectUri, MetadataAddress = MetadataAddress, // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it is using the home page PostLogoutRedirectUri = redirectUri, RedeemCode = true, Scope = OpenIdConnectScope.OpenIdProfile, // ResponseType is set to request the code id_token - which contains basic information about the signed-in user ResponseType = OpenIdConnectResponseType.Code, // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method Notifications = new OpenIdConnectAuthenticationNotifications { AuthenticationFailed = OnAuthenticationFailed } } ); } /// <summary> /// Handle failed authentication requests by redirecting the user to the home page with an error in the query string /// </summary> /// <param name="context"></param> /// <returns></returns> private Task OnAuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> context) { context.HandleResponse(); context.Response.Redirect("/?errormessage=" + context.Exception.Message); return Task.FromResult(0); } }
Fügen Sie in der Datei
web.config
die Metadatenadresse hinzu, und ersetzen Sie unterappSettings
„clientId“, „clientsecret“, „authority“, „redirectUri“ und „PostLogoutRedirectUri“ durch die Werte der Akamai-Anwendung.Diese Werte finden Sie auf der Registerkarte „OpenID“ für die Akamai-HTTP-Anwendung in Schritt 5, in dem Sie
Discovery URL=MetadataAddress
erstellt haben.redirectUri
ist die lokale Adresse für den Akamai-Connector zum Auflösen der lokalen OIDC-Anwendung.Authority
fungiert als „authorization_endpoint“. Informationen hierzu finden Sie in Ihrem.well-known/openid-configuration
Dokument.Ermittlungs-URL:
https://fabrikam.login.go.akamai-access.com/.well-known/openid-configuration
<appSettings> <add key="ClientId" value="xxxxxxxxxxxxxxxxxx" /> <add key="ClientSecret" value="xxxxxxxxxxxxxxxxxx" /> <add key="Authority" value="https://fabrikam.login.go.akamai-access.com/oidc/oauth" /> <add key="redirectUri" value="http://oidcapp.identity.mistermik.com/" /> <add key="PostLogoutRedirectUri" value="https://oidc-test.go.akamai-access.com/" /> <add key="MetadataAddress" value="https://fabrikam.login.go.akamai-access.com/.well-known/openid-configuration" /> </appSettings>
Testen Sie die Anwendung, indem Sie die Akamai-URL für die erstellte benutzerdefinierte HTTP-Webanwendung auswählen.
Testen der Lösung
Navigieren Sie zur Anwendungs-URL, und verwenden Sie dabei die externe URL, die in Akamai Enterprise Application Access angegeben wurde.
Ein nicht authentifizierter Benutzer wird zur Azure AD B2C-Anmeldeseite umgeleitet.
Wählen Sie auf der Seite den IdP aus der Liste aus.
Melden Sie sich als Endbenutzer mit Anmeldeinformationen an, die mit Azure AD B2C verknüpft sind.
Nach erfolgreicher Authentifizierung wird der Endbenutzer zurück zur Anwendung geleitet und als Endbenutzer bei der Anwendung angemeldet.