Udostępnij za pośrednictwem


Szybki start: konfigurowanie logowania jednokrotnego dla aplikacji przy użyciu planu Azure Spring Apps Enterprise

Uwaga

Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.

Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.

Ten artykuł dotyczy:❌ Podstawowa/Standardowa ✔️ Enterprise

W tym przewodniku Szybki start pokazano, jak skonfigurować logowanie jednokrotne dla aplikacji uruchomionych w planie Azure Spring Apps Enterprise.

Wymagania wstępne

Przygotowywanie poświadczeń logowania jednokrotnego

Aby skonfigurować logowanie jednokrotne dla aplikacji, należy przygotować poświadczenia. W poniższych sekcjach opisano kroki korzystania z istniejącego dostawcy lub aprowizacji rejestracji aplikacji przy użyciu identyfikatora Entra firmy Microsoft.

Korzystanie z istniejącego dostawcy

Wykonaj następujące kroki, aby skonfigurować logowanie jednokrotne przy użyciu istniejącego dostawcy tożsamości. Jeśli aprowizujesz rejestrację aplikacji Firmy Microsoft Entra, przejdź do poniższej sekcji, utwórz i skonfiguruj rejestrację aplikacji przy użyciu identyfikatora Entra firmy Microsoft.

  1. Skonfiguruj istniejącego dostawcę tożsamości, aby zezwolić na przekierowania z powrotem do usługi Spring Cloud Gateway dla oprogramowania VMware Tanzu i portalu interfejsu API dla programu VMware Tanzu. Usługa Spring Cloud Gateway ma jeden identyfikator URI umożliwiający ponowne wejście do bramy. Portal interfejsu API ma dwa identyfikatory URI do obsługi interfejsu użytkownika i podstawowego interfejsu API. Następujące polecenia pobierają te identyfikatory URI dodane do konfiguracji dostawcy logowania jednokrotnego.

    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. Uzyskaj element Client ID i Client Secret dla dostawcy tożsamości.

  3. Issuer URI Uzyskaj element dla dostawcy tożsamości. Należy skonfigurować dostawcę przy użyciu identyfikatora URI wystawcy, który jest identyfikatorem URI, który potwierdza jako identyfikator wystawcy. Jeśli na przykład podana wartość issuer-uri to https://example.com, żądanie konfiguracji dostawcy OpenID zostanie wykonane do https://example.com/.well-known/openid-configuration. Oczekuje się, że wynikiem będzie odpowiedź konfiguracji dostawcy OpenID.

    Uwaga

    Można używać tylko serwerów autoryzacji, które obsługują protokół OpenID Connect Discovery.

  4. JWK URI Uzyskaj identyfikator dostawcy tożsamości do późniejszego użycia. Typowo JWK URI przyjmuje formę ${ISSUER_URI}/keys lub ${ISSUER_URI}/<version>/keys. Aplikacja usługi tożsamości używa publicznych kluczy sieci Web JSON (JWK) do weryfikowania tokenów sieci Web JSON (JWT) wystawionych przez serwer autoryzacji dostawcy tożsamości logowania jednokrotnego.

Tworzenie i konfigurowanie rejestracji aplikacji przy użyciu identyfikatora Entra firmy Microsoft

Aby zarejestrować aplikację w usłudze Microsoft Entra ID, wykonaj następujące kroki. Jeśli używasz poświadczeń istniejącego dostawcy, przejdź do poniższej sekcji, wdróż aplikację usługi tożsamości.

  1. Użyj następującego polecenia, aby utworzyć rejestrację aplikacji przy użyciu identyfikatora Entra firmy Microsoft i zapisać dane wyjściowe:

    az ad app create --display-name <app-registration-name> > ad.json
    
  2. Użyj następującego polecenia, aby pobrać identyfikator aplikacji i zebrać klucz tajny klienta:

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    az ad app credential reset --id ${APPLICATION_ID} --append > sso.json
    
  3. Użyj następującego polecenia, aby przypisać jednostkę usługi do rejestracji aplikacji:

    az ad sp create --id ${APPLICATION_ID}
    
  4. Użyj poniższych poleceń, aby pobrać adresy URL bramy Spring Cloud Gateway i portalu interfejsu API, a następnie dodać niezbędne adresy URL odpowiedzi do rejestracji aplikacji usługi 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. Użyj następującego polecenia, aby pobrać aplikację Client ID. Zapisz dane wyjściowe do użycia w dalszej części tego przewodnika Szybki start.

    cat sso.json | jq -r '.appId'
    
  6. Użyj następującego polecenia, aby pobrać aplikację Client Secret. Zapisz dane wyjściowe do użycia w dalszej części tego przewodnika Szybki start.

    cat sso.json | jq -r '.password'
    
  7. Użyj następującego polecenia, aby pobrać plik Issuer URI. Zapisz dane wyjściowe do użycia w dalszej części tego przewodnika Szybki start.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/v2.0"
    
  8. Pobierz element JWK URI z danych wyjściowych następującego polecenia. Aplikacja usługi tożsamości używa publicznych kluczy sieci Web JSON (JWK) do weryfikowania tokenów sieci Web JSON (JWT) wystawionych przez usługę Active Directory.

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

Wdrażanie aplikacji usługi tożsamości

Aby ukończyć środowisko logowania jednokrotnego, wykonaj następujące kroki, aby wdrożyć aplikację usługi tożsamości. Aplikacja usługi tożsamości udostępnia jedną trasę, która ułatwia identyfikację użytkownika.

  1. Przejdź do folderu projektu.

  2. Użyj następującego polecenia, aby utworzyć aplikację identity-service :

    az spring app create \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  3. Użyj następującego polecenia, aby włączyć zewnętrzną konfigurację usługi tożsamości przez powiązanie z usługą Application Configuration Service:

    az spring application-configuration-service bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  4. Użyj następującego polecenia, aby włączyć odnajdywanie i rejestrację usługi tożsamości przez powiązanie z rejestrem usług:

    az spring service-registry bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  5. Aby wdrożyć usługę tożsamości, użyj następującego polecenia:

    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. Użyj następującego polecenia, aby kierować żądania do usługi tożsamości:

    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
    

Konfigurowanie logowania jednokrotnego dla usługi Spring Cloud Gateway

Bramę Spring Cloud Gateway można skonfigurować do uwierzytelniania żądań przy użyciu logowania jednokrotnego. Aby skonfigurować usługę Spring Cloud Gateway do korzystania z logowania jednokrotnego, wykonaj następujące kroki:

  1. Użyj następujących poleceń, aby skonfigurować usługę Spring Cloud Gateway do korzystania z logowania jednokrotnego:

    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. Poinstruuj aplikację usługi koszyka, aby używała usługi Spring Cloud Gateway do uwierzytelniania. Użyj następującego polecenia, aby podać niezbędne zmienne środowiskowe:

    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. Poinstruuj aplikację usługi zamówienia, aby używała usługi Spring Cloud Gateway do uwierzytelniania. Użyj następującego polecenia, aby podać niezbędne zmienne środowiskowe:

    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. Użyj następującego polecenia, aby pobrać adres URL bramy Spring Cloud Gateway:

    echo "https://${GATEWAY_URL}"
    

    Możesz otworzyć adres URL danych wyjściowych w przeglądarce, aby eksplorować zaktualizowaną aplikację. Funkcja Log In działa teraz, umożliwiając dodawanie elementów do koszyka i umieszczanie zamówień. Po zalogowaniu się przycisk informacje o kliencie wyświetli zalogowaną nazwę użytkownika.

Konfigurowanie logowania jednokrotnego dla portalu interfejsu API

Portal interfejsu API dla programu VMware Tanzu umożliwia korzystanie z logowania jednokrotnego w celu wymagania uwierzytelniania przed rozpoczęciem eksplorowania interfejsów API. Użyj następujących poleceń, aby skonfigurować logowanie jednokrotne dla portalu interfejsu 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>

Użyj następujących poleceń, aby pobrać adres URL portalu interfejsu 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}"

Możesz otworzyć adres URL danych wyjściowych w przeglądarce, aby eksplorować interfejsy API aplikacji. Przed rozpoczęciem eksplorowania interfejsów API zostanie przekierowany do logowania.


Czyszczenie zasobów

Jeśli planujesz kontynuować pracę z kolejnymi przewodnikami Szybki start i samouczkami, możesz pozostawić te zasoby na miejscu. Gdy grupa zasobów nie będzie już potrzebna, usuń grupę zasobów, która usuwa zasoby w grupie zasobów. Aby usunąć grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure, użyj następujących poleceń:

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

Następne kroki

Przejdź do dowolnego z następujących opcjonalnych przewodników Szybki start: