Compartilhar via


Início Rápido: configurar o logon único para aplicativos usando o plano Enterprise dos Aplicativos Spring do Azure

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica a: ❎ Básico/Standard ✅ Enterprise

Este início rápido mostra como configurar o logon único para aplicativos em execução no plano Enterprise dos Aplicativos Spring do Azure.

Pré-requisitos

Preparar credenciais de logon único

Para configurar o logon único para o aplicativo, é necessário preparar as credenciais. As seções a seguir descrevem as etapas para usar um provedor existente ou para provisionar um registro de aplicativo com o Microsoft Entra ID.

Usar um provedor existente

Siga estas etapas para configurar o logon único usando um Provedor de Identidade existente. Se você estiver provisionando um registro de aplicativo do Microsoft Entra, vá para a seção a seguir, Criar e configurar um registro de aplicativo com o Microsoft Entra ID.

  1. Configure seu provedor de identidade existente para permitir redirecionamentos de volta ao Gateway do Spring Cloud para VMware Tanzu e ao portal de API do VMware Tanzu. O Gateway do Spring Cloud tem apenas um URI para permitir o reingresso no gateway. O portal da API tem dois URIs para dar suporte à interface do usuário e à API subjacente. Os comandos a seguir recuperam esses URIs que você adiciona à configuração do provedor de logon único.

    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. Obtenha Client ID e Client Secret para o provedor de identidade.

  3. Obtenha Issuer URI para seu provedor de identidade. Você deve configurar o provedor com um URI emissor, que é o URI que ele afirma como Identificador do Emissor. Por exemplo, se o issuer-uri fornecido for https://example.com, então uma solicitação de configuração do Provedor OpenID é feita para https://example.com/.well-known/openid-configuration. Espera-se que o resultado seja uma resposta de configuração do Provedor OpenID.

    Observação

    Você só pode usar servidores de autorização que dão suporte ao protocolo de descoberta OpenID Connect.

  4. Obtenha JWK URI para seu provedor de identidade para uso posterior. JWK URI normalmente assume a forma de ${ISSUER_URI}/keys ou ${ISSUER_URI}/<version>/keys. O aplicativo do Serviço de Identidade usa as JWK (Chaves Web JSON) públicas para verificar os JWT (Tokens Web JSON) emitidos pelo servidor de autorização do provedor de identidade de logon único.

Criar e configurar um registro de aplicativo com o Microsoft Entra ID

Para registrar o aplicativo com o Microsoft Entra ID, siga estas etapas. Se você estiver usando as credenciais de um provedor existente, vá para a seção a seguir, Implantar o aplicativo do Serviço de Identidade.

  1. Use o seguinte comando para criar um registro de aplicativo com o Microsoft Entra ID e salvar a saída:

    az ad app create --display-name <app-registration-name> > ad.json
    
  2. Use o seguinte comando para recuperar a ID do aplicativo e coletar o segredo do cliente:

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    az ad app credential reset --id ${APPLICATION_ID} --append > sso.json
    
  3. Use o seguinte comando para atribuir uma Entidade de Serviço ao registro do aplicativo:

    az ad sp create --id ${APPLICATION_ID}
    
  4. Use os seguintes comandos para recuperar as URLs para o Gateway do Spring Cloud e o portal da API e adicione as URLs de resposta necessárias ao Registro de Aplicativo do 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. Use o comando a seguir para recuperar o Client ID do aplicativo. Salve a saída para usar posteriormente neste início rápido.

    cat sso.json | jq -r '.appId'
    
  6. Use o comando a seguir para recuperar o Client Secret do aplicativo. Salve a saída para usar posteriormente neste início rápido.

    cat sso.json | jq -r '.password'
    
  7. Use o comando a seguir para recuperar Issuer URI. Salve a saída para usar posteriormente neste início rápido.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/v2.0"
    
  8. Recupere JWK URI da saída do comando a seguir. O aplicativo do Serviço de Identidade usa as JWK (Chaves Web JSON) públicas para verificar os JWT (Tokens Web JSON) emitidos pelo Active Directory.

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

Implantar o aplicativo do Serviço de Identidade

Para concluir a experiência de logon único, use as etapas a seguir para implantar o aplicativo do Serviço de Identidade. O aplicativo do Serviço de Identidade fornece apenas uma rota para ajudar a identificar o usuário.

  1. Navegue até a pasta do projeto.

  2. Use o seguinte comando para criar o aplicativo identity-service:

    az spring app create \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  3. Use o seguinte comando para habilitar a configuração externalizada para o serviço de identidade, associando-se ao Serviço de Configuração de Aplicativo:

    az spring application-configuration-service bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  4. Use o seguinte comando para habilitar a descoberta e o registro de serviço para o serviço de identidade, associando-se ao Registro de Serviço:

    az spring service-registry bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  5. Use o seguinte comando para implantar o serviço de identidade:

    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. Use o seguinte comando para rotear solicitações ao serviço de identidade:

    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
    

Configurar o logon único para o Gateway do Spring Cloud

Você pode configurar o Gateway do Spring Cloud para autenticar solicitações usando o logon único. Para configurar o Gateway do Spring Cloud a fim de usar o logon único, siga estas etapas:

  1. Use os seguintes comandos para configurar o Gateway do Spring Cloud a fim de usar o logon único:

    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. Instrua o aplicativo de serviço de carrinho a usar o Gateway do Spring Cloud para autenticação. Use o seguinte comando para fornecer as variáveis de ambiente necessárias:

    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. Instrua o aplicativo de serviço de pedidos a usar o Gateway do Spring Cloud para autenticação. Use o seguinte comando para fornecer as variáveis de ambiente necessárias:

    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. Use o seguinte comando para recuperar a URL para o Gateway do Spring Cloud:

    echo "https://${GATEWAY_URL}"
    

    Você pode abrir a URL de saída em um navegador para explorar o aplicativo atualizado. Agora a função de Logon está em operação, permitindo que você adicione itens ao carrinho e faça pedidos. Depois de entrar, o botão de informações do cliente exibe o nome do usuário conectado.

Configurar o logon único para o portal da API

Você pode configurar o portal da API para VMware Tanzu para usar o logon único a fim de exigir a autenticação antes de explorar as APIs. Use os seguintes comandos para configurar o logon único para o portal da 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>

Use os seguintes comandos para recuperar a URL do portal da 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}"

Você pode abrir a URL de saída em um navegador para explorar as APIs do aplicativo. Você será direcionado para entrar antes de explorar as APIs.


Limpar os recursos

Se planejar continuar trabalhando com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão. Quando não for mais necessário, exclua o grupo de recursos, que excluirá os recursos no grupo de recursos. Para excluir o grupo de recursos usando a CLI do Azure, use os seguintes comandos:

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

Próximas etapas

Prossiga para qualquer um dos seguintes inícios rápidos opcionais: