Guia de início rápido: configurar o logon único para aplicativos usando o plano do Azure Spring Apps Enterprise

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.

Este artigo aplica-se a:❌ Basic/Standard ✔️ Enterprise

Este guia de início rápido mostra como configurar o logon único para aplicativos executados no plano do Azure Spring Apps Enterprise.

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
  • Uma licença para o plano Azure Spring Apps Enterprise. Para obter mais informações, consulte Plano empresarial no Azure Marketplace.
  • A CLI do Azure versão 2.45.0 ou superior.
  • Git.
  • JQ
  • A extensão do plano do Azure Spring Apps Enterprise. Use o comando a seguir para remover versões anteriores e instalar a extensão de plano Enterprise mais recente. Se você instalou spring-cloud a extensão anteriormente, desinstale-a para evitar incompatibilidades de configuração e versão.
    az extension add --upgrade --name spring
    az extension remove --name spring-cloud
    
  • Conclua as etapas em Criar e implantar aplicativos no Azure Spring Apps usando o plano Enterprise.

Preparar credenciais de logon único

Para configurar o logon único para o aplicativo, você precisa preparar credenciais. As seções a seguir descrevem as etapas para usar um provedor existente ou 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, pule 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 para o Spring Cloud Gateway para VMware Tanzu e o portal de API para VMware Tanzu. O Spring Cloud Gateway tem um único URI para permitir a reentrada no gateway. O portal da API tem dois URIs para suportar a interface do usuário e a API subjacente. Os comandos a seguir recuperam esses URIs que você adiciona à configuração do seu 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 o e Client Secret para o Client ID seu provedor de identidade.

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

    Nota

    Você só pode usar servidores de autorização que suportem o protocolo OpenID Connect Discovery.

  4. Obtenha o para o JWK URI seu provedor de identidade para uso posterior. O JWK URI normalmente assume a forma ${ISSUER_URI}/keys ou ${ISSUER_URI}/<version>/keys. O aplicativo Serviço de Identidade usa as chaves da Web JSON públicas (JWK) para verificar os JSON Web Tokens (JWT) 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 registar a aplicação com o Microsoft Entra ID, siga estes passos. 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 comandos a seguir para recuperar as URLs do Spring Cloud Gateway e do portal de API e adicionar as URLs de resposta necessárias ao Registro de Aplicativo do Ative 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 IDarquivo . Salve a saída para usar mais tarde neste início rápido.

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

    cat sso.json | jq -r '.password'
    
  7. Use o seguinte comando para recuperar o Issuer URI. Salve a saída para usar mais tarde 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 o JWK URI da saída do comando a seguir. O aplicativo Serviço de Identidade usa as chaves da Web JSON públicas (JWK) para verificar os JSON Web Tokens (JWT) emitidos pelo Ative 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 Identity Service fornece uma única rota para ajudar na identificação do usuário.

  1. Navegue até a pasta do projeto.

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

    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 vinculando-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 vinculando-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 para o 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 Spring Cloud Gateway

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

  1. Use os seguintes comandos para configurar o Spring Cloud Gateway para 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 Spring Cloud Gateway 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 Spring Cloud Gateway 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 do Spring Cloud Gateway:

    echo "https://${GATEWAY_URL}"
    

    Você pode abrir o URL de saída em um navegador para explorar o aplicativo atualizado. A função Log In agora está operacional, permitindo que você adicione itens ao carrinho e faça pedidos. Depois de iniciar sessão, o botão de informações do cliente apresenta o nome de utilizador com sessão iniciada.

Configurar o logon único para o portal da API

Você pode configurar o portal de API para VMware Tanzu para usar o logon único para exigir autenticação antes de explorar 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ê é direcionado para fazer logon antes de explorar APIs.


Clean up resources (Limpar recursos)

Se você planeja continuar trabalhando com guias de início rápido e tutoriais subsequentes, convém deixar esses recursos no lugar. Quando não for mais necessário, exclua o grupo de recursos, que exclui os recursos do 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óximos passos

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