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
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Licencja planu Azure Spring Apps Enterprise. Aby uzyskać więcej informacji, zobacz Plan przedsiębiorstwa w witrynie Azure Marketplace.
- Interfejs wiersza polecenia platformy Azure w wersji 2.45.0 lub nowszej.
- Git.
- jq
- Rozszerzenie planu Usługi Azure Spring Apps Enterprise. Użyj następującego polecenia, aby usunąć poprzednie wersje i zainstalować najnowsze rozszerzenie planu Enterprise. Jeśli wcześniej zainstalowano
spring-cloud
rozszerzenie, odinstaluj je, aby uniknąć niezgodności konfiguracji i wersji.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Wykonaj kroki opisane w temacie Kompilowanie i wdrażanie aplikacji w usłudze Azure Spring Apps przy użyciu planu Enterprise.
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.
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"
Uzyskaj element
Client ID
iClient Secret
dla dostawcy tożsamości.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
tohttps://example.com
, żądanie konfiguracji dostawcy OpenID zostanie wykonane dohttps://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.
JWK URI
Uzyskaj identyfikator dostawcy tożsamości do późniejszego użycia. TypowoJWK 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.
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
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
Użyj następującego polecenia, aby przypisać jednostkę usługi do rejestracji aplikacji:
az ad sp create --id ${APPLICATION_ID}
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"
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'
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'
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"
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.
Przejdź do folderu projektu.
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>
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>
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>
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>"
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:
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>
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"
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}"
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: