

AWS Der Mainframe Modernization Service (Managed Runtime Environment Experience) steht Neukunden nicht mehr zur Verfügung. Funktionen, die dem AWS Mainframe Modernization Service (Managed Runtime Environment-Erfahrung) ähneln, finden Sie unter AWS Mainframe Modernization Service (Self-Managed Experience). Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter Änderung der Verfügbarkeit von [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Konfigurieren Sie die Authentifizierung für Gapwalk-Anwendungen
<a name="ba-runtime-auth"></a>

Um die OAuth2 Authentifizierung für Ihre Gapwalk-Anwendung zu konfigurieren, müssen Sie einen Identitätsanbieter (IdP) einrichten und ihn in Ihre Anwendung integrieren. Dieses Handbuch behandelt die Schritte zur Verwendung von Amazon Cognito oder Keycloak als IdP. Mit Amazon Cognito können Sie die Konfigurationsdatei Ihrer Anwendung mit den Cognito-Benutzerpooldetails aktualisieren. Mit Keycloak können Sie den Zugriff auf Ihre Anwendung APIs und Ressourcen auf der Grundlage der dem Benutzer zugewiesenen Rollen steuern.

**Topics**
+ [OAuth2 Gapwalk-Authentifizierung mit Amazon Cognito konfigurieren](ba-runtime-auth-cognito.md)
+ [Konfigurieren Sie die Gapwalk-Authentifizierung OAuth2 mit Keycloak](ba-runtime-auth-keycloak.md)

# OAuth2 Gapwalk-Authentifizierung mit Amazon Cognito konfigurieren
<a name="ba-runtime-auth-cognito"></a>

In diesem Thema wird beschrieben, wie die OAuth2 Authentifizierung für Gapwalk-Anwendungen mit Amazon Cognito als Identitätsanbieter (IdP) konfiguriert wird.

## Voraussetzungen
<a name="ba-runtime-auth-cognito-prereq"></a>

In diesem Tutorial werden wir Amazon Cognito als IdP und PlanetDemo als modernisiertes Projekt verwenden.

Sie können jeden anderen externen Identitätsanbieter verwenden. Die ClientRegistration Informationen müssen von Ihrem IdP bezogen werden und sind für die Gapwalk-Authentifizierung erforderlich. Weitere Informationen finden Sie im [Amazon Cognito Entwicklerhandbuch](https://docs.aws.amazon.com/cognito/latest/developerguide/).

**Die Informationen: ClientRegistration **

Kunden-ID  
Die ID der ClientRegistration. In unserem Beispiel wird es so sein. PlanetsDemo

Kundengeheimnis  
Das Geheimnis Ihres Kunden.

Endpunkt der Autorisierung  
Der Autorisierungsendpunkt-URI für den Autorisierungsserver.

Token-Endpunkt  
Der Token-Endpunkt-URI für den Autorisierungsserver.

Jwks-Endpunkt  
Der URI, der zum Abrufen des JSON-Webschlüssels (JWK) verwendet wird, der die Schlüssel für die Validierung der vom Autorisierungsserver ausgestellten JSON-Websignatur enthält.

URI umleiten  
Der URI, zu dem der Autorisierungsserver den Endbenutzer weiterleitet, wenn der Zugriff gewährt wird.

## Einrichtung von Amazon Cognito
<a name="cog-setup"></a>

Zunächst erstellen und konfigurieren wir einen Amazon Cognito Cognito-Benutzerpool und einen Benutzer, die wir mit unserer bereitgestellten Gapwalk-Anwendung zu Testzwecken verwenden werden.

**Anmerkung**  
Wenn Sie einen anderen IdP verwenden, können Sie diesen Schritt überspringen.

**Benutzerpool erstellen**

1. Gehen Sie zu Amazon Cognito in AWS-Managementkonsole und authentifizieren Sie sich mit Ihren AWS Anmeldeinformationen.

1. Wählen Sie **User Pools** (Benutzerpools) aus.

1. Wählen Sie **Create a user pool**.

1. Behalten **Sie unter Anmeldeerlebnis konfigurieren** den Standardanbietertyp für den **Cognito-Benutzerpool** bei. **Sie können eine oder mehrere **Anmeldeoptionen für den Cognito-Benutzerpool** auswählen. Wählen Sie zunächst **Benutzername** und dann Weiter.**  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/cog-auth-provider.png)

1. **Behalten **Sie unter Sicherheitsanforderungen konfigurieren** die Standardeinstellungen bei und deaktivieren Sie die **Multi-Faktor-Authentifizierung**, indem Sie **Kein MFA** und dann Weiter auswählen.**  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/cog-sec-requirements.png)

1. **Deaktivieren Sie aus Sicherheitsgründen die Option **Selbstregistrierung aktivieren** und wählen Sie dann Weiter aus.**  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/cog-config-sign-up.png)

1. Wählen Sie **E-Mail mit Cognito** senden und dann **Weiter**.  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/cog-email.png)

1. Geben **Sie unter Integrieren Sie Ihre App** einen Namen für Ihren Benutzerpool an. Wählen Sie unter **Gehostete Authentifizierungsseiten** die Option **Die von Cognito gehostete Benutzeroberfläche verwenden** aus.  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/cog-domain.png)

1. Der Einfachheit halber wählen Sie **unter Domain** die Option **Eine Cognito-Domäne verwenden** aus und geben Sie ein Domainpräfix ein, `https://planetsdemo` z. B. Die Demo-App muss als Client hinzugefügt werden.

   1. Wählen Sie unter **Anfänglicher App-Client** die Option **Vertraulicher Client** aus. Geben Sie einen App-Clientnamen ein, z. B.**planetsdemo**, und wählen Sie dann **Generate a Client Secret** aus.

   1. Geben Sie im Feld **Zulässige Rückruf-URL** die URL ein, zu der der Benutzer nach der Authentifizierung weitergeleitet werden soll. Die URL muss mit `/login/oauth2/code/cognito` enden. Zum Beispiel für unsere Anwendung und Backend-Gapwalk- und BAC-Anwendungen:

      ```
      http://localhost:8080/bac
            http://localhost:8080/bac/login/oauth2/code/cognito
            http://localhost:8080/gapwalk-application
            http://localhost:8080/gapwalk-application/login/oauth2/code/cognito
            http://localhost:8080/planetsdemo
            http://localhost:8080/planetsdemo/login/oauth2/code/cognito
      ```

      Sie können die URL später bearbeiten.  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/cog-urls.png)

   1.  URLsGeben Sie **unter Zulässige Abmeldung** die URL der Abmeldeseite ein, zu der Amazon Cognito weiterleiten soll, wenn Ihre Anwendung Benutzer abmeldet. Zum Beispiel für Backend-Anwendungen Gapwalk und BAC:

      ```
      http://localhost:8080/bac/logout
      http://localhost:8080/gapwalk-application/logout
      http://localhost:8080/planetsdemo/logout
      ```

      Sie können die URL später bearbeiten.

   1. Behalten Sie die Standardwerte in den Abschnitten **Erweiterte App-Client-Einstellungen** und **Lese- und Schreibberechtigungen für Attribute** bei.

   1. Wählen Sie **Weiter** aus.

1. **Überprüfen Sie unter Überprüfen und erstellen** Ihre Auswahl und wählen Sie dann **Benutzerpool erstellen** aus.

Weitere Informationen finden Sie unter [Benutzerpool erstellen](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html).

**Benutzererstellung**

Da die Selbstregistrierung deaktiviert ist, erstellen Sie einen Amazon Cognito Cognito-Benutzer. Navigieren Sie zu Amazon Cognito in der AWS-Managementkonsole. Wählen Sie den Benutzerpool aus, den Sie erstellt haben, und wählen Sie dann unter **Benutzer die** Option **Benutzer erstellen** aus.

Wählen Sie **unter Benutzerinformationen** die Option **E-Mail-Einladung senden** aus, geben Sie einen Benutzernamen und eine E-Mail-Adresse ein und wählen Sie **Passwort generieren** aus. Wählen Sie **Create user** (Benutzer erstellen) aus.

**Erstellung einer Rolle**

Erstellen Sie auf der Registerkarte **Gruppen** 3 Gruppen (SUPER\$1ADMIN, ADMIN und USER) und ordnen Sie Ihren Benutzer einer oder mehreren dieser Gruppen zu. Diese Rollen werden später von der Gapwalk-Anwendung ROLE\$1SUPER\$1ADMIN, ROLE\$1ADMIN und ROLE\$1USER zugeordnet, um den Zugriff auf einige eingeschränkte API-REST-Aufrufe zu ermöglichen.

Die Anwendung implementiert eine scope-to-role hierarchische OAuth2 Zuordnung, die mit mehreren Identitätsanbietern funktioniert. Wenn von Cognito ausgegebene JWT-Token für die Autorisierung von Ressourcenservern verwendet werden, werden die im Token definierten Bereiche automatisch den entsprechenden Rollen zugeordnet.

## Integrieren Sie Amazon Cognito in die Gapwalk-Anwendung
<a name="integrate-cognito"></a>

Nachdem Ihr Amazon Cognito Cognito-Benutzerpool und Ihre Benutzer bereit sind, gehen Sie in die `application-main.yml` Datei Ihrer modernisierten Anwendung und fügen Sie den folgenden Code hinzu:

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: https://cognito-idp.<region-id>.amazonaws.com/<pool-id>
gapwalk-application.security.domainName: <your-cognito-domain>

spring:
  security:
    oauth2:
      client:
        registration:
          cognito:
            client-id: <client-id>
            client-name: <client-name>
            client-secret: <client-secret>
            provider: cognito
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "<redirect-uri>"
        provider:
          cognito:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.domainName}/oauth2/authorize
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json
            token-uri: ${gapwalk-application.security.domainName}/oauth2/token
            user-name-attribute: username
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json
```

Ersetzen Sie die folgenden Platzhalter wie beschrieben:

1. Gehen Sie zu Amazon Cognito in AWS-Managementkonsole und authentifizieren Sie sich mit Ihren AWS Anmeldeinformationen.

1. Wählen Sie **Benutzerpools** und dann den Benutzerpool aus, den Sie erstellt haben. Sie finden Ihre *pool-id* **Benutzerpool-ID**.

1. Wählen Sie dort **App-Integration** aus, wo Sie Ihre finden können*your-cognito-domain*, und gehen Sie dann zu **App-Clients und Analysen** und wählen Sie Ihre App aus.

1. Im **App-Client: YourApp** findest du*client-name*,*client-id*, und *client-secret* (**Geheimes Client-Geheimnis anzeigen**).

1. *region-id*entspricht der AWS Region-ID, in der Sie Ihren Amazon Cognito Cognito-Benutzer und Ihren Benutzerpool erstellt haben. Beispiel: `eu-west-3`.

1. *redirect-uri*Geben Sie den URI ein, den Sie für **Zulässige Rückruf-URL** angegeben haben. In unserem Beispiel ist `http://localhost:8080/planetsdemo/login/oauth2/code/cognito` es.

Sie können jetzt Ihre Gapwalk-Anwendung bereitstellen und den zuvor erstellten Benutzer verwenden, um sich bei Ihrer App anzumelden.

# Konfigurieren Sie die Gapwalk-Authentifizierung OAuth2 mit Keycloak
<a name="ba-runtime-auth-keycloak"></a>

In diesem Thema wird beschrieben, wie die OAuth2 Authentifizierung für Gapwalk-Anwendungen mit Keycloak als Identitätsanbieter (IdP) konfiguriert wird. In diesem Tutorial verwenden wir Keycloak 24.0.0.

## Voraussetzungen
<a name="ba-runtime-auth-keycloak-prereq"></a>
+ [Keycloak](https://www.keycloak.org/)
+ Gapwalk-Anwendung

## Einrichtung von Keycloak
<a name="keycloak-setup"></a>

1. Gehen Sie in Ihrem Webbrowser zu Ihrem Keycloak-Dashboard. Die Standardanmeldedaten sind admin/admin. Gehen Sie zur Navigationsleiste oben links und erstellen Sie einen Bereich mit dem Namen**demo**, wie in der folgenden Abbildung gezeigt.  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_2.png)

1. Erstellen Sie einen Client mit dem Namen**app-demo**.  
![\[User interface for creating a new client in an authentication management system.\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_3.jpg)

   `localhost:8080`Ersetzen Sie es durch die Adresse Ihrer Gapwalk-Anwendung  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_4.png)  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_5.png)

1. **Um Ihr Client-Geheimnis zu erhalten, wählen Sie **Clients**, dann **App-Demo und dann Credentials**.**  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_6.jpg)

1. Wählen Sie **Clients**, dann **Client-Bereiche und dann Vordefinierten** Mapper **hinzufügen** aus. Wählen Sie **Realm-Rollen** aus.  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_7.jpg)

1. Bearbeiten Sie Ihre Realm-Rolle mit der in der folgenden Abbildung gezeigten Konfiguration.  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_8.jpg)

1. Merken Sie sich den definierten **Namen für den Token-Anspruch**. Sie benötigen diesen Wert in der Definition der Gapwalk-Einstellungen für die `gapwalk-application.security.claimGroupName` Eigenschaft.  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_9.jpg)

1. Wählen Sie **Realms-Rollen** und erstellen Sie 3 Rollen:**SUPER\$1ADMIN**, **ADMIN** und. **USER** Diese Rollen werden später der Gapwalk-Anwendung `ROLE_SUPER_ADMIN``ROLE_ADMIN`, und `ROLE_USER` zugeordnet, um auf einige eingeschränkte API-REST-Aufrufe zugreifen zu können.  
![\[alt_text\]](http://docs.aws.amazon.com/de_de/m2/latest/userguide/images/ba-runtime-auth-keycloak_10.jpg)

## Integrieren Sie Keycloak in die Gapwalk-Anwendung
<a name="gapwalk-setup"></a>

Bearbeiten Sie Ihre wie folgt: `application-main.yml`

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: http://<KEYCLOAK_SERVER_HOSTNAME>/realms/<YOUR_REALM_NAME>
gapwalk-application.security.claimGroupName: "keycloak:groups"

gapwalk-application.security.userAttributeName: "preferred_username"
# Use "username" for cognito, 
#     "preferred_username" for keycloak
#      or any other string

spring:
  security:
    oauth2:
      client:
        registration:
          demo:
            client-id: <YOUR_CLIENT_ID>
            client-name: Demo App
            client-secret: <YOUR_CLIENT_SECRET>
            provider: keycloak
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
        provider:
          keycloak:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/auth
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
            token-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/token
            user-name-attribute: ${gapwalk-application.security.userAttributeName}
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
```

Ersetzen Sie*<KEYCLOAK\$1SERVER\$1HOSTNAME>*, *<YOUR\$1REALM\$1NAME>**<YOUR\$1CLIENT\$1ID>*, und *<YOUR\$1CLIENT\$1SECRET>* durch Ihren Keycloak-Server-Hostnamen, Ihren Realm-Namen, Ihre Client-ID und Ihr Client-Geheimnis.