IBM Cloud Docs
Schnelleinstieg: Liberty for Java-Back-End-Apps

Schnelleinstieg: Liberty for Java-Back-End-Apps

Mit App ID können Sie Ihre API-Endpunkte auf einfache Weise schützen und die Sicherheit Ihrer Back-End-Anwendungen mit Liberty for Java gewährleisten. Mit diesem Leitfaden können Sie schnell einen einfachen Authentifizierungsablauf in weniger als 20 Minuten in Betrieb nehmen.

Backend Liberty for Java-Apps
Abbildung 1. Back-End- Liberty for Java-Datenfluss

  1. Um eine Anforderung an eine geschützte Ressource zu stellen, muss ein Client über ein Zugriffstoken verfügen. In Schritt 1 stellt der Client eine Anforderung für ein Token an App ID. Weitere Informationen zum Abrufen von Zugriffstoken finden Sie unter Token abrufen.
  2. App ID gibt die Token zurück.
  3. Mithilfe des Zugriffstokens stellt der Client eine Anforderung für den Zugriff auf die geschützte Ressource.
  4. Die Ressource validiert das Token, das Struktur, Ablauf, Signatur, Zielgruppe und alle anderen vorhandenen Felder enthält. Wenn das Token nicht gültig ist, verweigert der Ressourcenserver den Zugriff. Wenn die Tokenvalidierung erfolgreich ist, gibt sie die Daten zurück.

Schulungsvideo

Sehen Sie sich das folgende Video an, um zu erfahren, wie Sie App ID verwenden können, um eine einfache Liberty for Java-Anwendung zu schützen. Alle Informationen, die im Video behandelt werden, finden Sie auch in schriftlicher Form auf dieser Seite.

Sie haben keine App, mit der Sie den Ablauf ausprobieren können? Kein Problem! App ID stellt eine einfache Liberty for Java-Beispielappbereit.

Vorbereitende Schritte

Bevor Sie mit der Verwendung von App ID in Ihrer Liberty for Java-Back-End-Anwendung beginnen, müssen die folgenden Voraussetzungen erfüllt sein:

Ihre Berechtigungsnachweise abrufen

Sie können Ihre Berechtigungsnachweise mithilfe einer der folgenden Methoden abrufen.

  • Navigieren Sie zur Registerkarte Anwendungen des App ID-Dashboards. Wenn Sie noch nicht über eine Anwendung verfügen, dann können Sie auf Anwendung hinzufügen klicken, um eine neue Anwendung zu erstellen.

  • Durch eine POST-Anforderung an den /management/v4/<tenantID>/applications-Endpunkt.

     Request format:
     ```sh {: codeblock}
     curl -X POST \  https://us-south.appid.cloud.ibm.com/management/v4/<tenantID>/applications/ \
     -H 'Content-Type: application/json' \
     -H 'Authorization: Bearer <IAMToken>' \
     -d '{"name": "ApplicationName"}'
     ```
     Example response:
     ```json {: screen}
     {
       "clientId": "xxxxx-34a4-4c5e-b34d-d12cc811c86d",
       "tenantId": "xxxxx-9b1f-433e-9d46-0a5521f2b1c4",
       "secret": "ZDk5YWZkYmYt*******",
       "name": "app1",
       "oAuthServerUrl": "https://us-south.appid.cloud.ibm.com/oauth/v4/xxxxx-9b1f-433e-9d46-0a5521f2b1c4",
       "profilesUrl": "https://us-south.appid.cloud.ibm.com",
       "discoveryEndpoint": "https://us-south.appid.cloud.ibm.com/oauth/v4/xxxxxx-9b1f-433e-9d46-0a5521f2b1c4/.well-known/openid-configuration"
     }
     ```
    

Datei server.xml konfigurieren

  1. Öffnen Sie die Datei server.xml.

  2. Fügen Sie die folgenden Features zum Abschnitt featureManager hinzu. Einige Features sind möglicherweise in Liberty integriert. Wenn Sie beim Ausführen Ihres Servers einen Fehler erhalten, können Sie diese installieren, in dem Sie .installUtility install {name_of_server} aus dem Verzeichnis 'bin' Ihrer Liberty-Installation ausführen.

    <featureManager>
       <feature>appSecurity-2.0</feature>
       <feature>openidConnectClient-1.0</feature>
       <feature>ssl-1.0</feature>
       <feature>servlet-3.1</feature>
    </featureManager>
    
  3. Konfigurieren Sie SSL, indem Sie der Datei server.xml folgenden Code hinzufügen.

    <keyStore id="defaultKeyStore" password="{password}"/>
    <keyStore id="RootCA" password="{password}" location="${server.config.dir}/resources/security/{myTrustStore}"/>
    <ssl id="{sslID}" keyStoreRef="defaultKeyStore" trustStoreRef="{truststore-ref}"/>
    
  4. Erstellen Sie ein Open ID Connect-Client-Feature und definieren Sie die folgenden Platzhalter. Mit den Berechtigungsnachweisen, die Sie erhalten haben, füllen Sie die Platzhalter aus.

    <openidConnectClient
       id="oidc-client-simple-liberty-backend-app" 		
       inboundPropagation="required"
       jwkEndpointUrl="<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/publickeys"
       issuerIdentifier="<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>"
       signatureAlgorithm="RS256"
       audiences="{client-id}"
       sslRef="oidcClientSSL"
    /> 	
    
    Tabelle 1. OIDC-Elementvariablen für Liberty for Java-Apps
    Variable Beschreibung
    id Der Name Ihrer Anwendung.
    inboundPropagation Damit die im Token empfangenen Informationen weitergegeben werden, muss der Wert auf "required" gesetzt werden.
    jwkEndpointUrl Der Endpunkt, der verwendet wird, um Schlüssel für die Validierung des Token abzurufen. Weitere Informationen zu den verfügbaren Regionen. Sie können Ihre Tenant-ID in den Berechtigungsnachweisen finden, die Sie zuvor erstellt haben.
    issuerIdentifier Die Aussteller-ID definiert Ihren Berechtigungsserver. Weitere Informationen zu den verfügbaren Regionen. Sie können Ihre Tenant-ID in den Berechtigungsnachweisen finden, die Sie zuvor erstellt haben.
    signatureAlgorithm Als "RS256" angegeben.
    audiences Standardmäßig wird das Token für Ihre App ID-Client-ID ausgegeben, die sich in Ihren Anwendungsberechtigungsnachweisen befindet.
    sslRef Der Name der SSL-Konfiguration, die Sie verwenden möchten.
  5. Definieren Sie Ihren speziellen Subjekttyp als ALL_AUTHENTICATED_USERS.

    <application
       id="simple-liberty-backend-app"
       location="location-of-your-war-file"
       name="simple-liberty-backend-app"
       type="war">
    
       <application-bnd>
          <security-role name="myrole">
                <special-subject type="ALL_AUTHENTICATED_USERS"/>
          </security-role>
       </application-bnd>
    </application>
    

Datei web.xml konfigurieren

Definieren Sie in der Datei web.xml die Bereiche Ihrer Anwendung, die Sie schützen möchten.

  1. Definieren Sie eine Sicherheitsrolle. Diese Rolle muss dieselbe Rolle sein, die Sie in der Datei server.xml definiert haben.

    <security-role>
    <role-name>myrole</role-name>
    </security-role>
    
  2. Definieren Sie eine Integritätsbedingung für die Sicherheit

    <security-constraint>
       <display-name>Security Constraints</display-name>
       <web-resource-collection>
          <web-resource-name>ProtectedArea</web-resource-name>
          <url-pattern>/api/*</url-pattern>
       </web-resource-collection>
       <auth-constraint>
          <role-name>myrole</role-name>
       </auth-constraint>
       <user-data-constraint>
          <transport-guarantee>NONE</transport-guarantee>
       </user-data-constraint>
    </security-constraint>
    

Konfiguration testen

Nachdem Sie nun die Erstinstallation abgeschlossen haben, erstellen Sie die App und testen Ihre Konfiguration, um sicherzustellen, dass alles wie erwartet funktioniert.

  1. Wechseln Sie in Ihr Anwendungsverzeichnis.

  2. Erstellen Sie Ihre Anwendung.

    server run
    
  3. Stellen Sie eine Anforderung an den geschützten Endpunkt. Es wird ein Fehler zurückgegeben.

  4. Rufen Sie ein Zugriffstoken ab.

  5. Stellen Sie mit dem Zugriffstoken, das Sie im vorherigen Schritt erhalten haben, eine Anforderung an den Endpunkt. Sie können jetzt auf den geschützten Endpunkt zugreifen. Überprüfen Sie, dass die Antwort den erwarteten Inhalt aufweist.

Nächste Schritte

Sind Sie bereit, Ihre Authentifizierungserfahrung zu perfektionieren? Lesen Sie diesen Blog oder erfahren Sie mehr über die App-zu-App-Kommunikation.