Uwierzytelnianie wdrożeń w usłudze Azure App Service
Aby umożliwić Ci wykonanie ćwiczeń w tym module, zalogowano Cię do środowiska piaskownicy. Ponieważ to środowisko jest interaktywne, wszystkie wdrożenia zostały uwierzytelnione przy użyciu poświadczeń użytych do zainicjowania piaskownicy. Jednak wdrożenia nie będą używać tego środowiska interaktywnego, jeśli automatyzujesz proces kompilacji. W scenariuszu automatyzacji należy skonfigurować projekt tak, aby korzystał z jednej z obsługiwanych metod uwierzytelniania.
W tej lekcji dowiesz się, jak Twoja firma może skonfigurować program Maven pod kątem korzystania z uwierzytelniania platformy Azure.
Uwierzytelnianie aplikacji internetowej
Platforma Azure umożliwia elastyczne decydowanie o sposobie uwierzytelniania aplikacji. Wybrana opcja zależy od środowiska kompilacji firmy. Poniżej wymieniono trzy opcje uwierzytelniania kodu aplikacji za pomocą narzędzia Maven w kolejności złożoności (od najmniejszych do większości):
Uwierzytelnij się przy użyciu interfejsu wiersza polecenia platformy Azure lub użyj usługi Cloud Shell w witrynie Azure Portal.
Utwórz jednostkę usługi platformy Azure, utwórz plik JSON przy użyciu poświadczeń jednostki usługi i zmodyfikuj plik projektu
pom.xml
.Utwórz jednostkę usługi platformy Azure, dodaj poświadczenia jednostki usługi do pliku Maven
settings.xml
i zmodyfikuj plik projektupom.xml
, aby używać ustawień narzędzia Maven.
Firma Microsoft zaleca trzecią opcję, ponieważ stanowi ona najbardziej niezawodne, elastyczne i spójne podejście do uwierzytelniania. W rzeczywistym środowisku istniejące aplikacje internetowe Java firmy mogą być uruchomione na serwerach lokalnych, które nie mają zainstalowanych narzędzi interfejsu wiersza polecenia platformy Azure. Mając to na uwadze, prawdopodobnie zaimplementujesz zalecenie, aby dodać uwierzytelnianie przy użyciu jednostki usługi i pliku Maven settings.xml
. Jednak w tym ćwiczeniu piaskownica nie ma wystarczających uprawnień do tworzenia jednostek usługi.
Uwierzytelnianie przy użyciu interfejsu wiersza polecenia platformy Azure
Najprostszym sposobem uwierzytelniania programu Maven jest zalogowanie się przy użyciu interfejsu wiersza polecenia platformy Azure. Wtyczka Maven dla usługi Azure App Service może następnie wdrożyć aplikację przy użyciu Twoich poświadczeń bez konieczności przeprowadzania dodatkowej konfiguracji.
Jeśli używasz usługi Azure Cloud Shell, tak jak podczas wykonywania ćwiczeń w piaskownicy usługi Microsoft Learn w tym module, domyślnie logujesz się na platformie Azure; Nie trzeba uruchamiać więcej poleceń. Jeśli jednak używasz interfejsu wiersza polecenia platformy Azure z osobnego komputera, musisz zalogować się za pomocą polecenia az login
.
Uwierzytelnianie przy użyciu jednostki usługi
Druga metoda uwierzytelniania aplikacji internetowej obejmuje utworzenie jednostki usługi platformy Azure i zapisanie poświadczeń jednostki usługi w pliku, do którego będziesz odwoływać się z ustawień projektu.
Aby utworzyć jednostkę usługi Azure przy użyciu interfejsu wiersza polecenia platformy Azure, wykonaj następujące kroki.
Uruchom następujące polecenie w interfejsie wiersza polecenia platformy Azure, aby utworzyć jednostkę usługi Azure:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Gdzie
https://mywebapp-1234567890.azurewebsites.net/
to adres URL aplikacji internetowej.To polecenie zwraca odpowiedź z obiektem JSON podobnym do następującego przykładu:
Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "displayName": "mywebapp-1234567890.azurewebsites.net/", "name": "https://mywebapp-1234567890.azurewebsites.net/", "password": "...", "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt" }
Zmodyfikuj plik aplikacji
pom.xml
internetowej, aby użyć informacji w danych wyjściowych JSON.pom.xml
Otwórz plik za pomocą edytora kodu:cd ~/MyWebApp code pom.xml
Znajdź sekcję
<configuration>
dla elementuazure-webapp-maven-plugin
.Dodaj następujący kod XML po wierszu zawierającym
<region>
element i użyj informacji w danych wyjściowych JSON:<auth> <type>service_principal</type> <client>value-of-appId</client> <tenant>value-of-tenant</tenant> <key>value-of-password</key> <environment>azure</environment> </auth>
Sekcja
azure-webapp-maven-plugin
powinna teraz wyglądać podobnie do następującego przykładu:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.13.0</version> <configuration> <schemaVersion>v2</schemaVersion> <resourceGroup>MyWebApp-1714654093047-rg</resourceGroup> <appName>MyWebApp-1714654093047</appName> <pricingTier>S1</pricingTier> <region>centralus</region> <auth> <type>service_principal</type> <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client> <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant> <key>abcdefghijklmnopqrstuvwxyz1234567890</key> <environment>azure</environment> </auth> <runtime> <os>Linux</os> <javaVersion>Java 17</javaVersion> <webContainer>Tomcat 10.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Zapisz zmiany za pomocą kombinacji klawiszy Ctrl+S.
Zamknij edytor kodu za pomocą kombinacji klawiszy Ctrl+Q.
Użyj narzędzia Maven, aby skompilować i wdrożyć aplikację internetową w usłudze aplikacja systemu Azure Service:
mvn azure-webapp:deploy
Program Maven wyświetla serię komunikatów kompilacji, a końcowy komunikat powinien wskazywać pomyślne wdrożenie na platformie Azure:
[INFO] Scanning for projects... [INFO] [INFO] -------------------< com.microsoft.example:MyWebApp >------------------- [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp --- [INFO] Auth type: SERVICE_PRINCIPAL [INFO] Username: 74d82376-184f-400e-a08e-27cd522d7559 [INFO] There is only one subscription '...' in your account, will use it automatically. [INFO] Subscription: ... [INFO] Failed to get version of your artifact, skip artifact compatibility test [INFO] Trying to deploy external resources to MyWebApp-1714654093047... [INFO] Successfully deployed the resources to MyWebApp-1714654093047 [INFO] Trying to deploy artifact to MyWebApp-1714654093047... [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war] ... [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 47.052 s [INFO] Finished at: 2024-05-02T13:10:54Z [INFO] ------------------------------------------------------------------------
Wiersz
Auth type: SERVICE_PRINCIPAL
w odpowiedzi wskazuje, że jednostka usługi została użyta do opublikowania aplikacji internetowej na platformie Azure.
Uwierzytelnianie przy użyciu pliku settings.xml
programu Maven
Trzecia metoda uwierzytelniania aplikacji internetowej polega na utworzeniu jednostki usługi platformy Azure, utworzeniu pliku maven settings.xml
zawierającego poświadczenia jednostki usługi i zmodyfikowaniu pliku projektu pom.xml
w celu użycia ustawień narzędzia Maven.
Kroki tworzenia jednostki usługi Azure za pomocą interfejsu wiersza polecenia platformy Azure są takie same jak w poprzedniej sekcji tej lekcji.
Uruchom następujące polecenie w interfejsie wiersza polecenia platformy Azure, aby utworzyć jednostkę usługi Azure:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Gdzie
https://mywebapp-1234567890.azurewebsites.net/
to adres URL aplikacji internetowej.To polecenie zwraca odpowiedź z obiektem JSON podobnym do następującego przykładu:
Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "displayName": "mywebapp-1234567890.azurewebsites.net/", "name": "https://mywebapp-1234567890.azurewebsites.net/", "password": "...", "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt" }
Utwórz wersję użytkownika pliku
settings.xml
do użycia przez program Maven.Utwórz nowy plik XML dla ustawień narzędzia Maven za pomocą edytora kodu:
code ~/.m2/settings.xml
Wklej poniższy kod XML do pliku:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>azure-auth</id> <configuration> <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client> <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant> <key>pppppppp-pppp-pppp-pppp-pppppppppppp</key> </configuration> </server> </servers> </settings>
Gdzie:
Parametr Opis client
Określa wartość appId
jednostki usługikey
Określa wartość password
jednostki usługitenant
Określa wartość tenant
jednostki usługiZapisz zmiany za pomocą kombinacji klawiszy Ctrl+S.
Zamknij edytor kodu za pomocą kombinacji klawiszy Ctrl+Q.
Zmodyfikuj
pom.xml
plik aplikacji internetowej, aby odwoływać się do pliku uwierzytelniania.pom.xml
Otwórz plik za pomocą edytora kodu:cd ~/MyWebApp code pom.xml
Znajdź sekcję
<configuration>
dla elementuazure-webapp-maven-plugin
.Dodaj następujący kod XML po wierszu zawierającym element
<region>
:<auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth>
Sekcja
azure-webapp-maven-plugin
powinna teraz wyglądać podobnie do następującego przykładu:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.13.0</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>maven-publish</resourceGroup> <appName>MyWebApp-1234567890</appName> <pricingTier>S1</pricingTier> <region>centralus</region> <auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth> <runtime> <os>Linux</os> <javaVersion>Java 17</javaVersion> <webContainer>Tomcat 10.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Zapisz zmiany za pomocą kombinacji klawiszy Ctrl+S.
Zamknij edytor kodu za pomocą kombinacji klawiszy Ctrl+Q.
Użyj narzędzia Maven, aby skompilować i wdrożyć aplikację internetową w usłudze aplikacja systemu Azure Service:
mvn azure-webapp:deploy
Program Maven wyświetla serię komunikatów kompilacji, a końcowy komunikat powinien wskazywać pomyślne wdrożenie na platformie Azure:
[INFO] -------------------< com.microsoft.example:MyWebApp >------------------- [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp --- [INFO] Auth type: SERVICE_PRINCIPAL [INFO] Username: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa [INFO] There is only one subscription '...' in your account, will use it automatically. [INFO] Subscription: ... [INFO] Failed to get version of your artifact, skip artifact compatibility test [INFO] Trying to deploy external resources to MyWebApp-1714654093047... [INFO] Successfully deployed the resources to MyWebApp-1714654093047 [INFO] Trying to deploy artifact to MyWebApp-1714654093047... [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war] ... [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 53.611 s [INFO] Finished at: 2024-05-02T13:53:31Z [INFO] ------------------------------------------------------------------------
Wiersz
Auth type: SERVICE_PRINCIPAL
w odpowiedzi wskazuje, że poświadczenia jednostki usługi zostały użyte do opublikowania aplikacji internetowej na platformie Azure.