Uwierzytelnianie wdrożeń w usłudze Azure App Service

Ukończone

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 projektu pom.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.

  1. 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"
    }
    
  2. Zmodyfikuj plik aplikacji pom.xml internetowej, aby użyć informacji w danych wyjściowych JSON.

    1. pom.xml Otwórz plik za pomocą edytora kodu:

      cd ~/MyWebApp
      code pom.xml
      
    2. Znajdź sekcję <configuration> dla elementu azure-webapp-maven-plugin.

    3. 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>
      
      
    4. Zapisz zmiany za pomocą kombinacji klawiszy Ctrl+S.

    5. Zamknij edytor kodu za pomocą kombinacji klawiszy Ctrl+Q.

  3. 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.

  1. 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"
    }
    
  2. Utwórz wersję użytkownika pliku settings.xml do użycia przez program Maven.

    1. Utwórz nowy plik XML dla ustawień narzędzia Maven za pomocą edytora kodu:

      code ~/.m2/settings.xml
      
    2. 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ługi
      key Określa wartość password jednostki usługi
      tenant Określa wartość tenant jednostki usługi
    3. Zapisz zmiany za pomocą kombinacji klawiszy Ctrl+S.

    4. Zamknij edytor kodu za pomocą kombinacji klawiszy Ctrl+Q.

  3. Zmodyfikuj pom.xml plik aplikacji internetowej, aby odwoływać się do pliku uwierzytelniania.

    1. pom.xml Otwórz plik za pomocą edytora kodu:

      cd ~/MyWebApp
      code pom.xml
      
    2. Znajdź sekcję <configuration> dla elementu azure-webapp-maven-plugin.

    3. 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> 
      
    4. Zapisz zmiany za pomocą kombinacji klawiszy Ctrl+S.

    5. Zamknij edytor kodu za pomocą kombinacji klawiszy Ctrl+Q.

  4. 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.

Sprawdź swoją wiedzę

1.

Które z poniższych metod nie są obsługiwane w przypadku uwierzytelniania wdrożeń przy użyciu wtyczki Maven dla usługi aplikacja systemu Azure Service?

2.

Prawda czy fałsz: Możesz zapisać kod JSON zwracany podczas tworzenia jednostki usługi platformy Azure w pliku i użyć tego pliku do uwierzytelniania za pomocą wtyczki Maven dla usługi aplikacja systemu Azure Service.

3.

Które z następujących metod są zalecane w przypadku uwierzytelniania wdrożeń przy użyciu wtyczki Maven dla usługi Azure App Service?