Udostępnij przez


Uwierzytelnij się do zasobów platformy Azure z aplikacji JavaScript hostowanych na miejscu.

Aplikacje hostowane poza platformą Azure, takie jak lokalne lub w centrum danych innej firmy, powinny używać jednostki usługi aplikacji za pośrednictwem identyfikatora Entra firmy Microsoft do uwierzytelniania w usługach platformy Azure. W poniższych sekcjach nauczysz się:

  • Jak zarejestrować aplikację w usłudze Microsoft Entra w celu utworzenia głównego użytkownika usługi
  • Jak przypisać role do uprawnień w obrębie zakresu
  • Jak uwierzytelniać się przy użyciu jednostki usługi w kodzie aplikacji

Podczas używania dedykowanych kont aplikacji można przestrzegać zasady minimalnych uprawnień podczas uzyskiwania dostępu do zasobów platformy Azure. Uprawnienia są ograniczone do określonych wymagań aplikacji podczas programowania, uniemożliwiając przypadkowy dostęp do zasobów platformy Azure przeznaczonych dla innych aplikacji lub usług. Takie podejście pomaga również uniknąć problemów, gdy aplikacja zostanie przeniesiona do środowiska produkcyjnego, zapewniając, że nie jest ona nadmiernie uprzywilejowana w środowisku deweloperskim.

Dla każdego środowiska hostowanego w aplikacji należy utworzyć inną rejestrację aplikacji. Umożliwia to skonfigurowanie uprawnień zasobów specyficznych dla środowiska dla każdej jednostki usługi i gwarantuje, że aplikacja wdrożona w jednym środowisku nie rozmawia z zasobami platformy Azure w innym środowisku.

Rejestrowanie aplikacji na platformie Azure

Obiekty głównej usługi aplikacji są tworzone za pośrednictwem rejestracji aplikacji na platformie Azure przy użyciu portalu Azure lub Azure CLI.

  1. W portalu Azure użyj paska wyszukiwania, aby przejść do strony Rejestracje aplikacji.

  2. Na stronie Rejestracje aplikacji wybierz pozycję + Nowa rejestracja.

  3. Na stronie Rejestrowanie aplikacji:

    • W polu Nazwa wprowadź opisową wartość zawierającą nazwę aplikacji i środowisko docelowe.
    • W przypadku obsługiwanych typów kont wybierz Konta wyłącznie w tym katalogu organizacyjnym (tylko klient firmy Microsoft — pojedyncza dzierżawa)lub dowolną opcję najlepiej dopasowaną do Twoich wymagań.
  4. Wybierz pozycję Zarejestruj, aby zarejestrować aplikację i utworzyć jednostkę usługi.

    Zrzut ekranu przedstawiający sposób tworzenia rejestracji aplikacji w witrynie Azure Portal.

  5. Na stronie rejestracji aplikacji skopiuj identyfikator aplikacji (klienta) i identyfikator katalogu (dzierżawy) i wklej je w tymczasowe miejsce do późniejszego użycia w konfiguracjach kodu aplikacji.

  6. Wybierz pozycję Dodaj certyfikat lub klucz tajny, aby skonfigurować poświadczenia dla aplikacji.

  7. Na stronie Certyfikaty i sekrety wybierz Nowy tajny klucz klienta.

  8. W panelu wysuwanym Dodaj tajny klienta, który jest już otwarty:

    • W polu Opis wprowadź wartość Current.
    • Dla wartości Wygasa pozostaw domyślną zalecaną wartość 180 days.
    • Wybierz pozycję Dodaj , aby dodać wpis tajny.
  9. Na stronie sekretów & skopiuj właściwość wartość sekretu klienta do użycia w przyszłym kroku.

    Uwaga / Notatka

    Wartość tajnego klucza klienta jest wyświetlana tylko raz po zarejestrowaniu aplikacji. Możesz dodać więcej tajnych kluczy klienta bez unieważnienia tego tajnego klucza klienta, ale ponowne wyświetlenie tej wartości nie jest możliwe.

Przypisz role do podmiotu zabezpieczeń aplikacji

Następnie określ, jakich ról (uprawnień) potrzebuje twoja aplikacja na temat zasobów i przypisz te role do utworzonej jednostki usługi. Role można przypisywać w zakresie zasobu, grupy zasobów lub subskrypcji. W tym przykładzie pokazano, jak przypisywać role w zakresie grupy zasobów, ponieważ większość aplikacji grupuje wszystkie zasoby platformy Azure w jedną grupę zasobów.

  1. W witrynie Azure Portal przejdź do strony Przegląd grupy zasobów zawierającej aplikację.

  2. Wybierz Kontrola dostępu (IAM) z nawigacji po lewej stronie.

  3. Na stronie Kontrola dostępu (zarządzanie dostępem i tożsamościami) wybierz pozycję + Dodaj , a następnie z menu rozwijanego wybierz pozycję Dodaj przypisanie roli . Strona Dodawanie przypisania roli zawiera kilka kart do konfigurowania i przypisywania ról.

  4. Na karcie Rola użyj pola wyszukiwania, aby zlokalizować rolę, którą chcesz przypisać. Wybierz rolę, a następnie wybierz pozycję Dalej.

  5. Na karcie Członkowie:

    • W polu Przypisz dostęp do wartości wybierz pozycję Użytkownik, grupa lub jednostka usługi .
    • Dla wartości Członkowie wybierz pozycję + Wybierz członków , aby otworzyć panel wysuwany Wybieranie członków .
    • Wyszukaj utworzoną wcześniej jednostkę usługi i wybierz ją z filtrowanych wyników. Wybierz , a następnie, aby wybrać grupę i zamknąć wysuwane okno.
    • Wybierz Przejrzyj + przypisz na dole zakładki Członkowie.

    Zrzut ekranu przedstawiający sposób przypisywania roli do podmiotu usługi.

  6. Na karcie Przeglądanie i przypisywanie wybierz pozycję Przejrzyj i przypisz w dolnej części strony.

Ustawianie zmiennych środowiskowych aplikacji

W czasie wykonywania niektóre poświadczenia z biblioteki Azure Identity, takie jak DefaultAzureCredential, EnvironmentCredentiali ClientSecretCredential, wyszukują informacje o tożsamości usługi zgodnie z konwencją w zmiennych środowiskowych. Istnieje wiele sposobów konfigurowania zmiennych środowiskowych podczas pracy z językiem JavaScript, w zależności od narzędzi i środowiska.

Niezależnie od wybranego podejścia skonfiguruj następujące zmienne środowiskowe dla jednostki usługi:

  • AZURE_CLIENT_ID: służy do identyfikowania zarejestrowanej aplikacji na platformie Azure.
  • AZURE_TENANT_ID: identyfikator dzierżawcy Microsoft Entra.
  • AZURE_CLIENT_SECRET: Tajne poświadczenie wygenerowane dla aplikacji.

W programie Visual Studio Code zmienne środowiskowe można ustawić w pliku launch.json projektu. Te wartości są pobierane automatycznie po uruchomieniu aplikacji. Jednak te konfiguracje nie są przesyłane z aplikacją podczas wdrażania, dlatego należy skonfigurować zmienne środowiskowe w docelowym środowisku hostingu.

"configurations": [
{
    "env": {
        "NODE_ENV": "development",
        "AZURE_CLIENT_ID": "<your-client-id>",
        "AZURE_TENANT_ID":"<your-tenant-id>",
        "AZURE_CLIENT_SECRET": "<your-client-secret>"
    }
}

Uwierzytelnianie w usługach platformy Azure z aplikacji

Biblioteka Azure Identity udostępnia różne poświadczenia— implementacje TokenCredential dostosowane do obsługi różnych scenariuszy i przepływów uwierzytelniania Microsoft Entra. W poniższych krokach pokazano, jak używać ClientSecretCredential podczas pracy z tożsamościami usługi lokalnie i w środowisku produkcyjnym.

Implementowanie kodu

Dodaj pakiet @azure/identity w projekcie Node.js:

npm install @azure/identity

Dostęp do usług platformy Azure jest uzyskiwany przy użyciu wyspecjalizowanych klas klientów z różnych bibliotek klienckich zestawu Azure SDK. W przypadku dowolnego kodu JavaScript, który tworzy obiekt klienta zestawu Azure SDK w aplikacji, wykonaj następujące kroki:

  1. Zaimportuj klasę ClientSecretCredential z modułu @azure/identity .
  2. ClientSecretCredential Utwórz obiekt za pomocą obiektów tenantId, clientIdi clientSecret.
  3. ClientSecretCredential Przekaż wystąpienie do konstruktora obiektu klienta zestawu Azure SDK.

Przykład tego podejścia przedstawiono w następującym segmencie kodu:

import { BlobServiceClient } from '@azure/storage-blob';
import { ClientSecretCredential } from '@azure/identity';

// Authentication
const tenantId = process.env.AZURE_TENANT_ID;
const clientId = process.env.AZURE_CLIENT_ID;
const clientSecret = process.env.AZURE_CLIENT_SECRET;

// Azure Storage account name
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;

if (!tenantId || !clientId || !clientSecret || !accountName) {
  throw Error('Required environment variables not found');
}

const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  credential
);

Alternatywną metodą jest przekazanie ClientSecretCredential obiektu bezpośrednio do konstruktora klienta zestawu Azure SDK:

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new ClientSecretCredential(tenantId, clientId, clientSecret)
);