Verifiëren bij Azure voor ontwikkel- en runtime-omgevingen

Als u zich wilt verifiëren bij Azure, maakt u een service-principal om de Azure SDK's voor JavaScript te gebruiken.

Verifiëren bij het Azure-platform

Over het algemeen moet u voor de meeste services en functionaliteit verifiëren met een methode voor identiteitsreferenties om een token te maken. Het token wordt doorgegeven aan de SDK om uw gebruik te autor toestemming te geven. Er zijn verschillende referentiemethoden. Sommige methoden vereisen een uitgebreidere installatie, maar zijn gebouwd voor gebruik door de productieservice.

Zoek pakketspecifieke instructies voor verificatie in elk npm Azure SDK-pakket.

Interactieve verificatie voor quickstarts en zelfstudies

Als u een quickstart of zelfstudie wilt gebruiken voor de Azure-services, is interactieve aanmelding de snelste referentiemethode. Met deze methode voltooit u een paar snelle stappen:

  1. U kunt de code uitvoeren.
  2. Er wordt een bericht weergegeven met een verificatie-URL en een token.
  3. Open een browser naar die URL en voer het token in. Afhankelijk van uw Azure-verificatievereisten is mogelijk een tweede verificatiestap vereist.
  4. Wanneer u de verificatie hebt voltooid, kunt u de browser sluiten.
  5. De code blijft worden uitgevoerd.

Een voorbeeld van interactieve aanmeldingsverificatie in een browser vereist de configuratie-instelling voor de tenant en client-id voor de Azure Active Directory toepassing die u wilt authenticeren. Een voorbeeld van deze code is:

function withInteractiveBrowserCredential() {
  const credential = new InteractiveBrowserCredential({
    tenantId: "<YOUR_TENANT_ID>",
    clientId: "<YOUR_CLIENT_ID>"
  });

  const client = new SecretClient("https://key-vault-name.vault.azure.net", credential);
}

Omdat voor deze methode elke keer dat de code wordt uitgevoerd een interactieve aanmelding is vereist, moet u deze methode vervangen door een niet-interactieve referentiemethode zodra u klaar bent om te beginnen met het ontwikkelwerk voor het Azure-platform.

Omdat deze code geen verificatiegeheimen gebruikt, kunt u deze code controleren op broncodebeheer.

Azure-verificatie voor ontwikkelings- en productiegebruik

Wanneer u klaar bent om aan de slag te gaan met ontwikkelen, raden we u aan de volgende referenties te selecteren:

Lokale ontwikkeling Geïmplementeerde toepassing
ClientSecretCredential. Nadat u uw service-principal hebt gemaakt en uw client-id, tenant-id en geheim hebt opgehaald, is deze referentie snel te gebruiken en zijn er geen omgevingsvariabelen vereist. Wanneer u van plan bent om te implementeren naar productie, gebruikt u de DefaultAzureCredential waarvoor omgevingsvariabelen zijn vereist. Deze referentiemethode biedt het voordeel dat u geen geheimen hoeft op te slaan of te gebruiken in broncodebeheer.

Er zijn andere referentieklassenwaarmee u verificatie voor specifieke doeleinden kunt controleren.

1. Een service-principal maken

Maak een service-principal en configureer de toegang tot Azure-resources. De service-principal is vereist voor het gebruik van de DefaultAzureCredential.

  1. Maak de service-principal met de Azure az ad sp create-for-rbac-opdracht met de Azure CLI of Cloud Shell.

    az ad sp create-for-rbac --name YOUR-SERVICE-PRINCIPAL-NAME --role Contributor
    
  2. Het antwoord van de opdracht bevat geheimen die u veilig moet opslaan, zoals in Azure Key Vault:

    {
      "appId": "YOUR-SERVICE-PRINCIPAL-ID",
      "displayName": "YOUR-SERVICE-PRINCIPAL-NAME",
      "name": "http://YOUR-SERVICE-PRINCIPAL-NAME",
      "password": "!@#$%",
      "tenant": "YOUR-TENANT-ID"
    }
    

U kunt ook een service-principal maken met:

2. Uw omgevingsvariabelen configureren

In de Azure-cloudomgevingen moet u de volgende omgevingsvariabelen configureren. Wijzig de namen niet omdat de Azure Identity SDK deze exacte omgevingsnamen vereist. Deze omgevingsvariabelen zijn VEREIST voor de context om DefaultAzureCredential te gebruiken.

  • AZURE_TENANT_ID: tenant uit de bovenstaande uitvoer van de service-principal.
  • AZURE_CLIENT_ID: appId uit de bovenstaande uitvoer van de service-principal.
  • AZURE_CLIENT_SECRET: password uit de bovenstaande uitvoer van de service-principal.

3. Azure-abonnementen met een service-principal opnaalen

Gebruik de nieuwe service-principal voor verificatie bij Azure en vermeld uw abonnementen.

  1. Installeer de afhankelijkheden: Azure SDK voor Identiteit,Azure Subscriptions SDK.

    npm install @azure/identity @azure/arm-subscriptions --save
    
  2. Maak een JavaScript-bestand met de naamlist.js, met de volgende code:

    const { ClientSecretCredential, DefaultAzureCredential } = require("@azure/identity");
    const { SubscriptionClient } = require("@azure/arm-subscriptions");
    
    let credentials = null;
    
    const tenantId = process.env["AZURE_TENANT_ID"] || "REPLACE-WITH-YOUR-TENANT-ID"; 
    const clientId = process.env["AZURE_CLIENT_ID"] || "REPLACE-WITH-YOUR-CLIENT-ID"; 
    const secret = process.env["AZURE_CLIENT_SECRET"] || "REPLACE-WITH-YOUR-CLIENT-SECRET";
    
    
    if(process.env.production){
    
      // production
      credentials = new DefaultAzureCredential();
    
    }else{
    
      // development
      credentials = new ClientSecretCredential(tenantId, clientId, secret);
      console.log("development");
    }
    
    // use credential to authenticate with Azure SDKs
    let client = new SubscriptionClient(credentials);
    
    const subscriptions = async() =>{
    
      // get list of Azure subscriptions
      const listOfSubscriptions = await client.subscriptions.list();
      
      // get details of each subscription
      for (const item of listOfSubscriptions) {
      
          const subscriptionDetails = await client.subscriptions.get(item.subscriptionId);
      
          /*
        
          Each item looks like:
        
          {
            id: '/subscriptions/123456',
            subscriptionId: '123456',
            displayName: 'YOUR-SUBSCRIPTION-NAME',
            state: 'Enabled',
            subscriptionPolicies: {
              locationPlacementId: 'Internal_2014-09-01',
              quotaId: 'Internal_2014-09-01',
              spendingLimit: 'Off'
            },
            authorizationSource: 'RoleBased'
          },
        
          */
      
          console.log(subscriptionDetails)
      }
    }
    
    subscriptions()
    .then(()=>console.log("done"))
    .catch(ex=>console.log(ex))
    
  3. Als u geen omgevingsvariabelen instelt, vervangt u de referentiereeksen door uw waarden.

    const tenantId = process.env["AZURE_TENANT_ID"] || "REPLACE-WITH-YOUR-TENANT-ID"; 
    const clientId = process.env["AZURE_CLIENT_ID"] || "REPLACE-WITH-YOUR-CLIENT-ID"; 
    const secret = process.env["AZURE_CLIENT_SECRET"] || "REPLACE-WITH-YOUR-CLIENT-SECRET";
    
  4. Voer het bestand uit om de lijst met resourcegroep weer te geven:

    node list.js
    
  5. Volledige voorbeeldcode en package.json weergeven:

Volgende stappen