Autentisera till Azure för utvecklings- och körningsmiljöer

Om du vill autentisera till Azure skapar du ett huvudnamn för tjänsten för att använda Azure-SDK:er för JavaScript.

Autentisera till Azure-plattformen

I allmänhet för de flesta tjänster och funktioner måste du autentisera med en identitetsautentitetsmetod för att skapa en token. Token skickas till SDK:n för att godkänna din användning. Det finns flera autentiseringsmetoder, vissa kräver mer omfattande konfiguration men är byggda för användning av produktionstjänsten.

Hitta paketspecifika instruktioner för autentisering i varje npm Azure SDK-pakets .

Interaktiv autentisering för snabbstarter och självstudier

Om du vill använda en snabbstart eller självstudie för Azure-tjänsterna är den snabbaste autentiseringsmetoden interaktiv inloggning. Med den här metoden utför du några enkla steg:

  1. Du kör koden.
  2. Ett meddelande visas med en autentiserings-URL och en token.
  3. Öppna en webbläsare till url:en och ange token. Beroende på dina krav för Azure-autentisering kan ett andra autentiseringssteg krävas.
  4. När du har slutfört autentiseringen kan du stänga webbläsaren.
  5. Koden fortsätter att köras.

Ett exempel på interaktiv inloggningsautentisering i en webbläsare kräver konfigurationsinställningen för klientorganisationen och klient-ID:t för det Azure Active Directory-program som du autentiserar för. Ett exempel på den här koden är:

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);
}

Eftersom den här metoden kräver en interaktiv inloggning varje gång koden körs, bör du ersätta den här metoden med en icke-interaktiv autentiseringsmetod när du är redo att påbörja utvecklingsarbetet för Azure-plattformen.

Eftersom den här koden inte använder några autentiseringshemligheter kan du kontrollera den här koden för källkodskontroll.

Azure-autentisering för utveckling och produktionsanvändning

När du är redo att påbörja utvecklingsarbetet rekommenderar vi att du väljer följande autentiseringsuppgifter:

Lokal utveckling Distribuerat program
ClientSecretCredential. När du har skapat tjänstens huvudnamn och hämtat ditt klient-ID, ditt klient-ID och din hemlighet är autentiseringshemligheten snabb att använda och kräver inte miljövariabler. När du planerar att distribuera till produktion använder du DefaultAzureCredential som kräver miljövariabler. Den här autentiseringsmetoden ger fördelen att du inte behöver lagra eller använda hemligheter i källkontrollen.

Det finns andra autentiseringsklassersom gör att du kan styra autentiseringen för specifika ändamål.

1. Skapa ett huvudnamn för tjänsten

Skapa ett huvudnamn för tjänsten och konfigurera dess åtkomst till Azure-resurser. Tjänstens huvudnamn krävs för att använda DefaultAzureCredential.

  1. Skapa tjänstens huvudnamn med kommandot Azure az ad sp create-for-rbac med Azure CLI eller Cloud Shell.

    az ad sp create-for-rbac --name YOUR-SERVICE-PRINCIPAL-NAME --role Contributor
    
  2. Svaret från kommandot innehåller hemligheter som du behöver lagra på ett säkert sätt, till exempel i Azure Key Vault:

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

Du kan också skapa ett huvudnamn för tjänsten med:

2. Konfigurera miljövariabler

I Azure-molnmiljöerna måste du konfigurera följande miljövariabler. Ändra inte namnen eftersom Azure Identity SDK kräver dessa exakta miljönamn. Dessa miljövariabler krävs för att kontexten ska kunna använda DefaultAzureCredential.

  • AZURE_TENANT_ID: tenant från utdata för tjänstens huvudnamn ovan.
  • AZURE_CLIENT_ID: appId från utdata för tjänstens huvudnamn ovan.
  • AZURE_CLIENT_SECRET: password från utdata för tjänstens huvudnamn ovan.

3. Lista Azure-prenumerationer med tjänstens huvudnamn

Använd det nya tjänsthuvudnamn för att autentisera med Azure och lista dina prenumerationer.

  1. Installera beroendena: Azure SDK för Identity, Azure Subscriptions SDK.

    npm install @azure/identity @azure/arm-subscriptions --save
    
  2. Skapa en JavaScript-fil medlist.js, med följande kod:

    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. Om du inte anger miljövariabler ersätter du autentiseringssträngarna med dina värden.

    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. Kör filen för att visa listan över resursgrupper:

    node list.js
    
  5. Visa fullständig exempelkod och package.json:

Nästa steg