Démarrage rapide : applications de back end Liberty for Java

Avec App ID, vous pouvez facilement protéger vos noeuds finaux d'API et assurer la sécurité de vos applications de back end. Avec le guide, vous pouvez rapidement obtenir un flux d'authentification simple et en cours d'exécution en moins de 20 minutes.

Backend Liberty for Java
Liberty for Java

  1. Pour envoyer une demande à une ressource protégée, un client doit disposer d'un jeton d'accès. Dans l'étape 1, le client envoie une demande à App ID pour obtenir un jeton. Pour en savoir plus sur comment obtenir des jetons d'accès, voir Obtention de jetons.
  2. App ID renvoie les jetons
  3. A l'aide du jeton d'accès, le client effectue une demande d'accès à la ressource protégée.
  4. La ressource valide le jeton qui inclut la structure, l'expiration, la signature, le public et tout autre champ présent. Si le jeton n'est pas valide, le serveur de ressources refuse l'accès. Si la validation du jeton est concluante, il renvoie les données.

Avant de commencer

Avant d'être démarré avec App ID dans votre application de back endLiberty for Java, vous devez disposer des prérequis suivants :

Vous n'avez pas d'application avec laquelle vous pouvez expérimenter le flux ? Pas de problème ! App ID fournit un modèle d'application Liberty for Java simple.

Obtenir vos données d'identification

Vous pouvez obtenir vos données d'identification de deux manières au choix.

  • Accédez à l'onglet Applications du tableau de bord App ID. Si aucune application n'est encore répertoriée, cliquez sur Ajouter une application pour en créer une.

  • En envoyant une demande POST au Noeud final /management/v4/<tenantID>/applications.

     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"
     }
     ```
    

Configurer votre fichier server.xml

  1. Ouvrez votre fichier server.xml.

  2. Ajoutez les fonctions suivantes dans la section featureManager. Certaines fonctions peuvent être intégrées à Liberty. Si vous obtenez une erreur lors de l'exécution du serveur, vous pouvez les installer en exécutant .installUtility install {name_of_server} depuis le répertoire bin de votre installation Liberty.

    <featureManager>
       <feature>appSecurity-2.0</feature>
       <feature>openidConnectClient-1.0</feature>
       <feature>ssl-1.0</feature>
       <feature>servlet-3.1</feature>
    </featureManager>
    
  3. Configurez SSL en ajoutant ce qui suit à votre fichier server.xml.

    <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. Créez une fonction Open ID Connect Client et définissez les espaces réservés suivants. Avec les données d'identification que vous avez obtenues, remplissez les espaces réservés.

    <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"
    /> 	
    
    Variables d'élément OIDC pour les applications Liberty for Java
    Variable Description
    id Nom de votre application.
    inboundPropagation Pour propager les informations reçues dans le jeton, la valeur doit être définie sur "required".
    jwkEndpointUrl Le nœud final utilisé pour obtenir les clés dans pour valider le jeton. Reportez-vous à cette section sur les régions disponibles. Vous pouvez rechercher votre ID titulaire dans les données d'identification que vous avez créées précédemment.
    issuerIdentifier Identificateur d'émetteur qui définit votre serveur d'autorisation. Reportez-vous à cette section sur les régions disponibles. Vous pouvez rechercher votre ID titulaire dans les données d'identification que vous avez créées précédemment.
    signatureAlgorithm Spécifié en tant que "RS256".
    audiences Par défaut, le jeton est émis pour votre ID client App ID qui se trouve dans les données d'identification de votre application.
    sslRef Nom de la configuration SSL que vous souhaitez utiliser.
  5. Définissez votre type de sujet spécial en tant que 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>
    

Configurer votre fichier web.xml

Dans votre fichier web.xml, définissez les zones de votre application que vous souhaitez sécuriser.

  1. Définissez un rôle de sécurité. Ce rôle doit être le même que celui que vous avez défini dans le fichier server.xml.

    <security-role>
    <role-name>myrole</role-name>
    </security-role>
    
  2. Définissez une contrainte de sécurité.

    <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>
    

Tester votre configuration

Maintenant que vous avez terminé l'installation initiale, construisez l'application et testez votre configuration pour vous assurer que tout fonctionne comme prévu.

  1. Accédez au répertoire de votre application.

  2. Générez votre application.

    server run
    
  3. Envoyez une demande au noeud final protégé. Une erreur est renvoyée.

  4. Obtenez un jeton d'accès.

  5. Avec le jeton d'accès que vous avez obtenu à l'étape précédente, envoyez une demande au noeud final. Vous pouvez désormais accéder au nœud final protégé. Vérifiez que la réponse contient ce que vous attendez.