빠른 시작: Azure Spring Apps 엔터프라이즈 계획을 사용하여 애플리케이션에 대한 Single Sign-On 구성

참고 항목

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

이 문서의 적용 대상:❌ 기본/표준 ✔️ 엔터프라이즈

이 빠른 시작에서는 Azure Spring Apps 엔터프라이즈 계획에서 실행되는 애플리케이션에 대해 Single Sign-On을 구성하는 방법을 보여 줍니다.

필수 조건

Single Sign-On 자격 증명 준비

애플리케이션에 대한 Single Sign-On을 구성하려면 자격 증명을 준비해야 합니다. 다음 섹션에서는 기존 공급자를 사용하거나 Microsoft Entra ID를 사용하여 애플리케이션 등록을 프로비전하는 단계를 설명합니다.

기존 공급자 사용

기존 ID 공급자를 사용하여 Single Sign-On을 구성하려면 다음 단계를 수행합니다. Microsoft Entra 앱 등록을 프로비전하는 경우 Microsoft Entra ID를 사용하여 애플리케이션 등록 만들기 및 구성 섹션으로 건너뜁니다.

  1. VMware Tanzu용 Spring Cloud Gateway 및 VMware Tanzu용 API 포털로 다시 리디렉션할 수 있도록 기존 ID 공급자를 구성합니다. Spring Cloud Gateway에는 게이트웨이에 다시 입력할 수 있는 단일 URI가 있습니다. API 포털에는 사용자 인터페이스 및 기본 API를 지원하기 위한 두 가지 URI가 있습니다. 다음 명령은 Single Sign-On 공급자의 구성에 추가하는 이러한 URI를 검색합니다.

    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. ID 공급자에 대한 Client IDClient Secret을 가져옵니다.

  3. ID 공급자에 대한 Issuer URI를 가져옵니다. 발급자 식별자로 어설션하는 URI인 발급자 URI를 사용하여 공급자를 구성해야 합니다. 예를 들어 제공된 issuer-urihttps://example.com이면 OpenID 공급자 구성 요청이 https://example.com/.well-known/openid-configuration으로 만들어집니다. 결과는 OpenID 공급자 구성 응답이 될 것으로 예상됩니다.

    참고 항목

    OpenID Connect 검색 프로토콜을 지원하는 권한 부여 서버만 사용할 수 있습니다.

  4. 나중에 사용할 ID 공급자에 대한 JWK URI를 가져옵니다. JWK URI은 일반적으로 ${ISSUER_URI}/keys 또는 ${ISSUER_URI}/<version>/keys 형식을 사용합니다. Identity Service 애플리케이션은 공용 JWK(JSON 웹 키)를 사용하여 Single Sign-On ID 공급자의 권한 부여 서버에서 발급한 JWT(JSON 웹 토큰)를 확인합니다.

Microsoft Entra ID를 사용하여 애플리케이션 등록 만들기 및 구성

Microsoft Entra ID로 애플리케이션을 등록하려면 다음 단계를 수행합니다. 기존 공급자의 자격 증명을 사용하는 경우 ID 서비스 애플리케이션 배포 섹션으로 건너뜁니다.

  1. 다음 명령을 사용하여 Microsoft Entra ID에 애플리케이션 등록을 만들고 출력을 저장합니다.

    az ad app create --display-name <app-registration-name> > ad.json
    
  2. 다음 명령을 사용하여 애플리케이션 ID를 검색하고 클라이언트 암호를 수집합니다.

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    az ad app credential reset --id ${APPLICATION_ID} --append > sso.json
    
  3. 다음 명령을 사용하여 애플리케이션 등록에 서비스 주체를 할당합니다.

    az ad sp create --id ${APPLICATION_ID}
    
  4. 다음 명령을 사용하여 Spring Cloud Gateway 및 API 포털에 대한 URL을 검색하고 필요한 회신 URL을 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. 다음 명령을 사용하여 애플리케이션의 Client ID를 검색합니다. 이 빠른 시작의 뒷부분에서 사용할 출력을 저장합니다.

    cat sso.json | jq -r '.appId'
    
  6. 다음 명령을 사용하여 애플리케이션의 Client Secret를 검색합니다. 이 빠른 시작의 뒷부분에서 사용할 출력을 저장합니다.

    cat sso.json | jq -r '.password'
    
  7. 다음 명령을 사용하여 Issuer URI를 검색합니다. 이 빠른 시작의 뒷부분에서 사용할 출력을 저장합니다.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/v2.0"
    
  8. 다음 명령의 출력에서 JWK URI를 검색합니다. Identity Service 애플리케이션은 공용 JWK(JSON 웹 키)를 사용하여 Active Directory에서 발급한 JWT(JSON 웹 토큰)를 확인합니다.

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

Identity Service 애플리케이션 배포

Single Sign-On 환경을 완료하려면 다음 단계를 사용하여 Identity Service 애플리케이션을 배포합니다. Identity Service 애플리케이션은 사용자를 식별하는 데 도움이 되는 단일 경로를 제공합니다.

  1. 프로젝트 폴더로 이동합니다.

  2. 다음 명령을 실행하여 identity-service 애플리케이션을 만듭니다.

    az spring app create \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  3. 다음 명령을 사용하여 Application Configuration Service에 바인딩하여 ID 서비스에 대해 외부화된 구성을 사용하도록 설정합니다.

    az spring application-configuration-service bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  4. 다음 명령을 사용하여 Service Registry에 바인딩하여 ID 서비스에 대한 서비스 검색 및 등록을 사용하도록 설정합니다.

    az spring service-registry bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  5. 다음 명령을 사용하여 ID 서비스를 배포합니다.

    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. 다음 명령을 사용하여 요청을 ID 서비스로 라우팅합니다.

    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
    

Spring Cloud Gateway에 대한 Single Sign-On 구성

Single Sign-On을 사용하여 요청을 인증하도록 Spring Cloud Gateway를 구성할 수 있습니다. Single Sign-On을 사용하도록 Spring Cloud Gateway를 구성하려면 다음 단계를 수행합니다.

  1. 다음 명령을 사용하여 Single Sign-On을 사용하도록 Spring Cloud Gateway를 구성합니다.

    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. 인증을 위해 Spring Cloud Gateway를 사용하도록 카트 서비스 애플리케이션에 지시합니다. 다음 명령을 사용하여 필요한 환경 변수를 제공합니다.

    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. 인증에 Spring Cloud Gateway를 사용하도록 주문 서비스 애플리케이션에 지시합니다. 다음 명령을 사용하여 필요한 환경 변수를 제공합니다.

    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. 다음 명령을 사용하여 Spring Cloud Gateway에 대한 URL을 검색합니다.

    echo "https://${GATEWAY_URL}"
    

    브라우저에서 출력 URL을 열어 업데이트된 애플리케이션을 탐색할 수 있습니다. 이제 Log In 함수가 작동하므로 카트에 항목을 추가하고 주문을 할 수 있습니다. 로그인하면 고객 정보 단추에 로그인한 사용자 이름이 표시됩니다.

API 포털에 대한 Single Sign-On 구성

API를 탐색하기 전에 Single Sign-On을 사용하여 인증을 요구하도록 VMware Tanzu에 대한 API 포털을 구성할 수 있습니다. 다음 명령을 사용하여 API 포털에 대한 Single Sign-On을 구성합니다.

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>

다음 명령을 사용하여 API Portal에 대한 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://${PORTAL_URL}"

브라우저에서 출력 URL을 열어 애플리케이션 API를 검색할 수 있습니다. API를 탐색하기 전에 로그온하도록 지시됩니다.


리소스 정리

후속 빠른 시작 및 자습서를 계속 사용하려는 경우 이러한 리소스를 그대로 유지할 수 있습니다. 더 이상 필요 없으면 리소스 그룹을 삭제합니다. 그러면 리소스 그룹의 리소스가 삭제됩니다. Azure CLI를 사용하여 리소스 그룹을 삭제하려면 다음 명령을 사용합니다.

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

다음 단계

다음 중 원하는 빠른 시작을 계속 진행합니다.