Démarrage rapide : Configurer l’authentification unique pour les applications utilisant le plan Entreprise Azure Spring Apps

Notes

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

Cet article s’applique à :❌ De base/Standard ✔️ Entreprise

Ce guide de démarrage rapide montre comment configurer l’authentification unique pour les applications s’exécutant sur le plan Entreprise Azure Spring Apps.

Prérequis

Préparer les informations d’identification d’authentification unique

Pour configurer l’authentification unique pour l’application, vous devez préparer les informations d’identification. Les sections suivantes décrivent les étapes à suivre pour utiliser un fournisseur existant ou provisionner une inscription d’application avec Microsoft Entra ID.

Utiliser un fournisseur existant

Suivez ces étapes pour configurer l’authentification unique à l’aide d’un fournisseur d’identité existant. Si vous provisionnez une inscription d’application Microsoft Entra, passez directement à la section suivante, Créer et configurer une inscription d’application avec Microsoft Entra ID.

  1. Configurez votre fournisseur d’identité existant pour autoriser les redirections vers Spring Cloud Gateway pour VMware Tanzu et le portail API pour VMware Tanzu. Spring Cloud Gateway a un URI unique pour autoriser la ré-entrée vers la passerelle. Le portail d’API a deux URI pour prendre en charge l’interface utilisateur et l’API sous-jacente. Les commandes suivantes récupèrent les URI que vous ajoutez à la configuration de votre fournisseur d’authentification unique.

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    export PORTAL_URL=$(az spring api-portal show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    echo "https://${GATEWAY_URL}/login/oauth2/code/sso"
    echo "https://${PORTAL_URL}/oauth2-redirect.html"
    echo "https://${PORTAL_URL}/login/oauth2/code/sso"
    
  2. Obtenez le Client ID et le Client Secret pour votre fournisseur d’identité.

  3. Obtenez le Issuer URI pour votre fournisseur d’identité. Vous devez configurer le fournisseur avec un URI d’émetteur, qui est l’URI qu’il déclare comme identificateur de l’émetteur. Par exemple, si le issuer-uri fourni est https://example.com, une demande de configuration du fournisseur OpenID est envoyée à https://example.com/.well-known/openid-configuration. Le résultat attendu est une réponse de configuration du fournisseur OpenID.

    Notes

    Vous pouvez utiliser uniquement des serveurs d’autorisation qui prennent en charge le protocole OpenID Connect Discovery.

  4. Obtenez le JWK URI pour votre fournisseur d’identité afin de pouvoir l’utiliser ultérieurement. Le JWK URI a généralement le format ${ISSUER_URI}/keys ou ${ISSUER_URI}/<version>/keys. L’application Identity Service utilise les clés web JSON publiques (JWK) pour vérifier les jetons web JSON (JWT) émis par le serveur d’autorisation de votre fournisseur d’identité d’authentification unique.

Créer et configurer une inscription d’application avec Microsoft Entra ID

Pour inscrire l’application avec Microsoft Entra ID, suivez ces étapes. Si vous utilisez les informations d’identification d’un fournisseur existant, passez directement à la section suivante, Déployer l’application Identity Service.

  1. Utilisez la commande suivante pour créer une inscription d’application avec Microsoft Entra ID et enregistrez la sortie :

    az ad app create --display-name <app-registration-name> > ad.json
    
  2. Utilisez la commande suivante pour récupérer l’ID d’application et collecter la clé secrète client :

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    az ad app credential reset --id ${APPLICATION_ID} --append > sso.json
    
  3. Utilisez la commande suivante pour affecter un principal de service à l’inscription d’application :

    az ad sp create --id ${APPLICATION_ID}
    
  4. Utilisez les commandes suivantes pour récupérer les URL de Spring Cloud Gateway et du portail d’API, et ajouter les URL de réponse nécessaires à l’inscription d’application Active Directory.

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    
    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    export PORTAL_URL=$(az spring api-portal show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    az ad app update \
        --id ${APPLICATION_ID} \
        --web-redirect-uris "https://${GATEWAY_URL}/login/oauth2/code/sso" "https://${PORTAL_URL}/oauth2-redirect.html" "https://${PORTAL_URL}/login/oauth2/code/sso"
    
  5. Exécutez la commande suivante pour récupérer le Client ID de l’application. Enregistrez la sortie afin de la réutiliser plus tard dans ce guide de démarrage rapide.

    cat sso.json | jq -r '.appId'
    
  6. Exécutez la commande suivante pour récupérer le Client Secret de l’application. Enregistrez la sortie afin de la réutiliser plus tard dans ce guide de démarrage rapide.

    cat sso.json | jq -r '.password'
    
  7. Utilisez la commande suivante pour récupérer le Issuer URI. Enregistrez la sortie afin de la réutiliser plus tard dans ce guide de démarrage rapide.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/v2.0"
    
  8. Récupérez le JWK URI à partir de la sortie de la commande suivante. L’application Identity Service utilise les clés web JSON publiques (JWK) pour vérifier les jetons web JSON (JWT) émis par Active Directory.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/discovery/v2.0/keys"
    

Déployer l’application Identity Service

Pour terminer l’expérience d’authentification unique, effectuez les étapes suivantes pour déployer l’application Identity Service. L’application Identity Service fournit une route unique pour faciliter l’identification de l’utilisateur.

  1. Accédez au dossier du projet.

  2. Utilisez la commande suivante pour créer l’application identity-service :

    az spring app create \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  3. Utilisez la commande suivante pour activer la configuration externalisée pour le service d’identité en établissant une liaison au service de configuration d’application :

    az spring application-configuration-service bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  4. Utilisez la commande suivante afin d’activer la découverte de service et l’inscription pour le service d’identité en établissant une liaison au registre de service :

    az spring service-registry bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  5. Utilisez la commande suivante pour déployer le service d’identité :

    az spring app deploy \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --config-file-pattern identity/default \
        --source-path apps/acme-identity \
        --build-env BP_JVM_VERSION=17 \
        --env "JWK_URI=<jwk-uri>"
    
  6. Utilisez la commande suivante pour router les requêtes vers le service d’identité :

    az spring gateway route-config create \
        --resource-group <resource-group-name> \
        --name identity-routes \
        --service <Azure-Spring-Apps-service-instance-name> \
        --app-name identity-service \
        --routes-file azure-spring-apps-enterprise/resources/json/routes/identity-service.json
    

Configurer l’authentification unique pour Spring Cloud Gateway

Vous pouvez configurer Spring Cloud Gateway pour authentifier les requêtes avec l’authentification unique. Pour configurer Spring Cloud Gateway de façon à utiliser l’authentification unique, effectuez les étapes suivantes :

  1. Utilisez les commandes suivantes pour configurer Spring Cloud Gateway de façon à utiliser l’authentification unique :

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    az spring gateway update \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> \
        --api-description "Fitness Store API" \
        --api-title "Fitness Store" \
        --api-version "v1.0" \
        --server-url "https://${GATEWAY_URL}" \
        --allowed-origins "*" \
        --client-id <client-id> \
        --client-secret <client-secret> \
        --scope "openid,profile" \
        --issuer-uri <issuer-uri>
    
  2. Indiquez à l’application de service de panier (cart-service) d’utiliser Spring Cloud Gateway pour l’authentification. Utilisez la commande suivante pour fournir les variables d’environnement nécessaires :

    az spring app update \
        --resource-group <resource-group-name> \
        --name cart-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --env "AUTH_URL=https://${GATEWAY_URL}" "CART_PORT=8080"
    
  3. Indiquez à l’application de service de commande (order-service) d’utiliser Spring Cloud Gateway pour l’authentification. Utilisez la commande suivante pour fournir les variables d’environnement nécessaires :

    az spring app update \
        --resource-group <resource-group-name> \
        --name order-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --env "AcmeServiceSettings__AuthUrl=https://${GATEWAY_URL}"
    
  4. Utilisez la commande suivante pour récupérer l’URL de Spring Cloud Gateway :

    echo "https://${GATEWAY_URL}"
    

    Vous pouvez ouvrir l’URL de sortie dans un navigateur pour explorer l’application mise à jour. La fonction de connexion est maintenant opérationnelle, ce qui vous permet d’ajouter des éléments au panier et de passer des commandes. Une fois que vous êtes connecté, le bouton d’informations du client affiche le nom d’utilisateur connecté.

Configurer l’authentification unique pour le portail d’API

Vous pouvez configurer le portail d’API pour VMware Tanzu de façon à utiliser l’authentification unique afin d’exiger l’authentification avant d’explorer les API. Utilisez les commandes suivantes pour configurer l’authentification unique pour le portail d’API :

export PORTAL_URL=$(az spring api-portal show \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')

az spring api-portal update \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --client-id <client-id> \
    --client-secret <client-secret> \
    --scope "openid,profile,email" \
    --issuer-uri <issuer-uri>

Utilisez les commandes suivantes pour récupérer l’URL du portail d’API :

export PORTAL_URL=$(az spring api-portal show \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')

echo "https://${PORTAL_URL}"

Vous pouvez ouvrir l’URL de sortie dans un navigateur pour explorer les API d’application. Vous êtes dirigé vers la page de connexion avant d’explorer les API.


Nettoyer les ressources

Si vous prévoyez d’utiliser d’autres guides de démarrage rapide et tutoriels, vous pouvez conserver ces ressources. Quand vous n’en avez plus besoin, supprimez le groupe de ressources, ce qui supprime également les ressources qu’il contient. Pour supprimer le groupe de ressources à l’aide d’Azure CLI, utilisez les commandes suivantes :

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Étapes suivantes

Passez à l’un des guides de démarrage rapide facultatifs suivants :