Service-naar-service-verificatie voor het Azure Key Vault met behulp van .NETService-to-service authentication to Azure Key Vault using .NET

Als u zich wilt verifiëren bij Azure Key Vault, hebt u een Azure Active Directory (Azure AD)-referentie nodig, ofwel een gedeeld geheim of een certificaat.To authenticate to Azure Key Vault, you need an Azure Active Directory (Azure AD) credential, either a shared secret or a certificate.

Het beheren van dergelijke referenties kan lastig zijn.Managing such credentials can be difficult. Het is geneigd om referenties in een app te bundelen door deze op te nemen in de bron-of configuratie bestanden.It's tempting to bundle credentials into an app by including them in source or configuration files. De Microsoft.Azure.Services.AppAuthentication voor .NET-bibliotheek vereenvoudigt dit probleem.The Microsoft.Azure.Services.AppAuthentication for .NET library simplifies this problem. Het gebruikt de referenties van de ontwikkelaar voor verificatie tijdens de lokale ontwikkeling.It uses the developer's credentials to authenticate during local development. Wanneer de oplossing later naar Azure wordt geïmplementeerd, schakelt de bibliotheek automatisch over naar toepassings referenties.When the solution is later deployed to Azure, the library automatically switches to application credentials. Het gebruik van ontwikkelaars referenties tijdens de lokale ontwikkeling is veiliger omdat u geen Azure AD-referenties hoeft te maken of referenties tussen ontwikkel aars moet delen.Using developer credentials during local development is more secure because you don't need to create Azure AD credentials or share credentials between developers.

De Microsoft.Azure.Services.AppAuthentication-bibliotheek beheert verificatie automatisch, zodat u zich kunt concentreren op uw oplossing in plaats van uw referenties.The Microsoft.Azure.Services.AppAuthentication library manages authentication automatically, which in turn lets you focus on your solution, rather than your credentials. Het ondersteunt lokale ontwikkeling met geïntegreerde micro soft Visual Studio, Azure CLI of Azure AD Integrated-verificatie.It supports local development with Microsoft Visual Studio, Azure CLI, or Azure AD Integrated Authentication. Wanneer het wordt geïmplementeerd in een Azure-resource die een beheerde identiteit ondersteunt, gebruikt de bibliotheek automatisch beheerde identiteiten voor Azure-resources.When deployed to an Azure resource that supports a managed identity, the library automatically uses managed identities for Azure resources. Er zijn geen code-of configuratie wijzigingen vereist.No code or configuration changes are required. De bibliotheek biedt ook ondersteuning voor direct gebruik van Azure AD- client referenties wanneer een beheerde identiteit niet beschikbaar is of wanneer de beveiligings context van de ontwikkelaar tijdens de lokale ontwikkeling niet kan worden bepaald.The library also supports direct use of Azure AD client credentials when a managed identity isn't available, or when the developer's security context can't be determined during local development.

VereistenPrerequisites

  • Visual studio 2019 of Visual Studio 2017 v 15.5.Visual Studio 2019 or Visual Studio 2017 v15.5.

  • De app-verificatie-extensie voor Visual Studio, beschikbaar als een afzonderlijke uitbrei ding voor Visual Studio 2017 Update 5 en gebundeld met het product in update 6 en hoger.The App Authentication extension for Visual Studio, available as a separate extension for Visual Studio 2017 Update 5 and bundled with the product in Update 6 and later. Met Update 6 of hoger kunt u de installatie van de extensie voor app-verificatie controleren door Azure-hulpprogram ma's voor ontwikkel aars te selecteren in het installatie programma van Visual Studio.With Update 6 or later, you can verify the installation of the App Authentication extension by selecting Azure Development tools from within the Visual Studio installer.

De bibliotheek gebruikenUsing the library

Voor .NET-toepassingen is de eenvoudigste manier om te werken met een beheerde identiteit via het pakket Microsoft.Azure.Services.AppAuthentication.For .NET applications, the simplest way to work with a managed identity is through the Microsoft.Azure.Services.AppAuthentication package. Ga als volgt te aan de slag:Here's how to get started:

  1. Selecteer extra > NuGet package manager > NuGet-pakketten beheren voor oplossing om verwijzingen toe te voegen aan de NuGet-pakketten micro soft. Azure. Services. AppAuthentication en micro soft. Azure. . uw project.Select Tools > NuGet Package Manager > Manage NuGet Packages for Solution to add references to the Microsoft.Azure.Services.AppAuthentication and Microsoft.Azure.KeyVault NuGet packages to your project.

  2. Voeg de volgende code toe:Add the following code:

    using Microsoft.Azure.Services.AppAuthentication;
    using Microsoft.Azure.KeyVault;
    
    // Instantiate a new KeyVaultClient object, with an access token to Key Vault
    var azureServiceTokenProvider1 = new AzureServiceTokenProvider();
    var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider1.KeyVaultTokenCallback));
    
    // Optional: Request an access token to other Azure services
    var azureServiceTokenProvider2 = new AzureServiceTokenProvider();
    string accessToken = await azureServiceTokenProvider2.GetAccessTokenAsync("https://management.azure.com/").ConfigureAwait(false);
    

De klasse AzureServiceTokenProvider slaat het token in de cache op in het geheugen en haalt dit net vóór de verval datum op uit Azure AD.The AzureServiceTokenProvider class caches the token in memory and retrieves it from Azure AD just before expiration. U hoeft dus niet langer de verval datum te controleren voordat u de GetAccessTokenAsync-methode aanroept.So, you no longer have to check the expiration before calling the GetAccessTokenAsync method. Roep de methode aan wanneer u het token wilt gebruiken.Just call the method when you want to use the token.

De GetAccessTokenAsync-methode vereist een resource-id.The GetAccessTokenAsync method requires a resource identifier. Zie Wat is beheerde identiteiten voor Azure-resourcesvoor meer informatie over Microsoft Azure Services.To learn more about Microsoft Azure services, see What is managed identities for Azure resources.

Lokale ontwikkel verificatieLocal development authentication

Voor lokale ontwikkeling zijn er twee primaire verificatie scenario's: verificatie voor Azure-Servicesen verificatie bij aangepaste services.For local development, there are two primary authentication scenarios: authenticating to Azure services, and authenticating to custom services.

Verifiëren bij Azure-ServicesAuthenticating to Azure Services

Lokale computers bieden geen ondersteuning voor beheerde identiteiten voor Azure-resources.Local machines don't support managed identities for Azure resources. Als gevolg hiervan gebruikt de Microsoft.Azure.Services.AppAuthentication-bibliotheek uw ontwikkelaars referenties om te worden uitgevoerd in uw lokale ontwikkel omgeving.As a result, the Microsoft.Azure.Services.AppAuthentication library uses your developer credentials to run in your local development environment. Wanneer de oplossing is geïmplementeerd in azure, gebruikt de bibliotheek een beheerde identiteit om over te scha kelen naar een OAuth 2,0-client referentie toewijzings stroom.When the solution is deployed to Azure, the library uses a managed identity to switch to an OAuth 2.0 client credential grant flow. Deze aanpak houdt in dat u dezelfde code lokaal en extern kunt testen zonder dat u zich zorgen hoeft te maken.This approach means you can test the same code locally and remotely without worry.

Voor lokale ontwikkeling worden met AzureServiceTokenProvider tokens opgehaald met behulp van Visual Studio, Azure Command-Line Interface (CLI) of geïntegreerde Azure AD-verificatie.For local development, AzureServiceTokenProvider fetches tokens using Visual Studio, Azure command-line interface (CLI), or Azure AD Integrated Authentication. Elke optie wordt opeenvolgend geprobeerd en de bibliotheek gebruikt de eerste optie die slaagt.Each option is tried sequentially and the library uses the first option that succeeds. Als er geen optie werkt, wordt een uitzonde ring van @no__t 0 gegenereerd met gedetailleerde informatie.If no option works, an AzureServiceTokenProviderException exception is thrown with detailed information.

Verifiëren met Visual StudioAuthenticating with Visual Studio

Verificatie met behulp van Visual Studio:To authenticate by using Visual Studio:

  1. Meld u aan bij Visual Studio en gebruik Hulpprogram ma's  @ no__t-2 @ no__t-3Opties om Optieste openen.Sign in to Visual Studio and use Tools > Options to open Options.

  2. Selecteer Azure-service verificatie, kies een account voor lokale ontwikkeling en selecteer OK.Select Azure Service Authentication, choose an account for local development, and select OK.

Als u problemen ondervindt met het gebruik van Visual Studio, zoals fouten met betrekking tot het token provider bestand, moet u de voor gaande stappen zorgvuldig door nemen.If you run into problems using Visual Studio, such as errors that involve the token provider file, carefully review the preceding steps.

Mogelijk moet u uw ontwikkelaars token opnieuw verifiëren.You may need to reauthenticate your developer token. Hiertoe selecteert u extra  @ no__t-2 @ no__t-3Optiesen selecteert u vervolgens Azure @ no__t-6Service @ no__t-7Authentication.To do so, select Tools > Options, and then select Azure Service Authentication. Zoek naar een koppeling opnieuw verifiëren onder het geselecteerde account.Look for a Re-authenticate link under the selected account. Selecteer deze om te verifiëren.Select it to authenticate.

Verifiëren met Azure CLIAuthenticating with Azure CLI

Als u Azure CLI voor lokale ontwikkeling wilt gebruiken, zorg er dan voor dat u versie Azure cli v 2.0.12 of hoger hebt.To use Azure CLI for local development, be sure you have version Azure CLI v2.0.12 or later.

Azure CLI gebruiken:To use Azure CLI:

  1. Zoek in de Windows-taak balk naar Azure CLI om de Microsoft Azure opdracht promptte openen.Search for Azure CLI in the Windows Taskbar to open the Microsoft Azure Command Prompt.

  2. Meld u aan bij de Azure Portal: AZ login om u aan te melden bij Azure.Sign in to the Azure portal: az login to sign in to Azure.

  3. Controleer de toegang door AZ account Get-access-token--resource https://vault.azure.net in te voeren.Verify access by entering az account get-access-token --resource https://vault.azure.net. Als er een fout bericht wordt weer gegeven, controleert u of de juiste versie van Azure CLI correct is geïnstalleerd.If you receive an error, check that the right version of Azure CLI is correctly installed.

    Als Azure CLI niet in de standaard directory is geïnstalleerd, kan er een fout melding worden weer gegeven dat AzureServiceTokenProvider het pad voor de Azure CLI niet kan vinden.If Azure CLI isn't installed to the default directory, you may receive an error reporting that AzureServiceTokenProvider can't find the path for Azure CLI. Gebruik de omgevings variabele AzureCLIPath om de map voor de Azure cli-installatie te definiëren.Use the AzureCLIPath environment variable to define the Azure CLI installation folder. AzureServiceTokenProvider voegt de map die is opgegeven in de omgevings variabele AzureCLIPath toe aan de omgevings variabele Path als dat nodig is.AzureServiceTokenProvider adds the directory specified in the AzureCLIPath environment variable to the Path environment variable when necessary.

  4. Als u bent aangemeld bij Azure CLI met behulp van meerdere accounts of als uw account toegang heeft tot meerdere abonnementen, moet u het te gebruiken abonnement opgeven.If you're signed in to Azure CLI using multiple accounts or your account has access to multiple subscriptions, you need to specify the subscription to use. Voer de opdracht AZ account set--subscription < Subscription-id > in.Enter the command az account set --subscription .

Met deze opdracht wordt alleen uitvoer gegenereerd bij een fout.This command generates output only on failure. Als u de huidige account instellingen wilt controleren, voert u de opdracht az account list in.To verify the current account settings, enter the command az account list.

Verifiëren met Azure AD-verificatieAuthenticating with Azure AD authentication

Als u Azure AD-verificatie wilt gebruiken, controleert u het volgende:To use Azure AD authentication, verify that:

Verifiëren op aangepaste servicesAuthenticating to custom services

Wanneer een service Azure-Services aanroept, werken de vorige stappen omdat Azure-Services toegang tot zowel gebruikers als toepassingen toestaan.When a service calls Azure services, the previous steps work because Azure services allow access to both users and applications.

Bij het maken van een service die een aangepaste service aanroept, gebruikt u Azure AD-client referenties voor lokale ontwikkelings verificatie.When creating a service that calls a custom service, use Azure AD client credentials for local development authentication. Er zijn twee opties:There are two options:

  • Een Service-Principal gebruiken om u aan te melden bij Azure:Use a service principal to sign into Azure:

    1. Een service-principal maken.Create a service principal. Zie een Azure-service-principal maken met Azure clivoor meer informatie.For more information, see Create an Azure service principal with Azure CLI.

    2. Gebruik Azure CLI om u aan te melden met de volgende opdracht:Use Azure CLI to sign in with the following command:

      az login --service-principal -u <principal-id> --password <password> --tenant <tenant-id> --allow-no-subscriptions
      

      Omdat de Service-Principal mogelijk geen toegang tot een abonnement heeft, gebruikt u het argument --allow-no-subscriptions.Because the service principal may not have access to a subscription, use the --allow-no-subscriptions argument.

  • Gebruik omgevings variabelen om details van de Service-Principal op te geven.Use environment variables to specify service principal details. Zie de toepassing uitvoeren met een Service-Principalvoor meer informatie.For more information, see Running the application using a service principal.

Nadat u zich hebt aangemeld bij Azure, wordt de Service-Principal door AzureServiceTokenProvider gebruikt voor het ophalen van een token voor lokale ontwikkeling.After you've signed in to Azure, AzureServiceTokenProvider uses the service principal to retrieve a token for local development.

Deze aanpak geldt alleen voor lokale ontwikkeling.This approach applies only to local development. Wanneer uw oplossing is geïmplementeerd naar Azure, wordt de bibliotheek overgeschakeld naar een beheerde identiteit voor verificatie.When your solution is deployed to Azure, the library switches to a managed identity for authentication.

De toepassing uitvoeren met beheerde identiteit of door de gebruiker toegewezen identiteitRunning the application using managed identity or user-assigned identity

Wanneer u uw code uitvoert op een Azure App Service of een virtuele machine van Azure waarvoor een beheerde identiteit is ingeschakeld, gebruikt de bibliotheek automatisch de beheerde identiteit.When you run your code on an Azure App Service or an Azure VM with a managed identity enabled, the library automatically uses the managed identity. Er zijn geen code wijzigingen vereist, maar de beheerde identiteit moet machtigingen voor de sleutel kluis krijgen .No code changes are required, but the managed identity must have get permissions for the key vault. U kunt de beheerde identiteit Get -machtigingen geven via het toegangs beleidvan de sleutel kluis.You can give the managed identity get permissions through the key vault's Access Policies.

U kunt ook verifiëren met een door de gebruiker toegewezen identiteit.Alternatively, you may authenticate with a user-assigned identity. Zie informatie over beheerde identiteiten voor Azure-resourcesvoor meer informatie over door de gebruiker toegewezen identiteiten.For more information on user-assigned identities, see About Managed Identities for Azure resources. Als u wilt verifiëren met een door de gebruiker toegewezen identiteit, moet u de client-ID van de door de gebruiker toegewezen identiteit opgeven in de connection string.To authenticate with a user-assigned identity, you need to specify the Client ID of the user-assigned identity in the connection string. De connection string is opgegeven in ondersteuning voor de verbindings reeks.The connection string is specified in Connection String Support.

De toepassing uitvoeren met een Service-PrincipalRunning the application using a Service Principal

Het kan nodig zijn om een Azure AD-client referentie te maken om te verifiëren.It may be necessary to create an Azure AD Client credential to authenticate. Deze situatie kan zich voordoen in de volgende voor beelden:This situation may happen in the following examples:

  • Uw code wordt uitgevoerd op een lokale ontwikkel omgeving, maar niet onder de identiteit van de ontwikkelaar.Your code runs on a local development environment, but not under the developer's identity. Service Fabric bijvoorbeeld gebruikt het account Network Service voor lokale ontwikkeling.Service Fabric, for example, uses the NetworkService account for local development.

  • Uw code wordt uitgevoerd in een lokale ontwikkel omgeving en u verifieert bij een aangepaste service, zodat u uw ontwikkelaars identiteit niet kunt gebruiken.Your code runs on a local development environment and you authenticate to a custom service, so you can't use your developer identity.

  • Uw code wordt uitgevoerd op een Azure Compute-resource die nog geen beheerde identiteiten voor Azure-resources ondersteunt, zoals Azure Batch.Your code is running on an Azure compute resource that doesn't yet support managed identities for Azure resources, such as Azure Batch.

Er zijn drie primaire methoden voor het gebruik van een Service-Principal om uw toepassing uit te voeren.There are three primary methods of using a Service Principal to run your application. Als u een van deze wilt gebruiken, moet u eerst een service-principal maken.To use any of them, you must first create a service principal. Zie een Azure-service-principal maken met Azure clivoor meer informatie.For more information, see Create an Azure service principal with Azure CLI.

Een certificaat in de lokale-opslag plaats gebruiken om u aan te melden bij Azure ADUse a certificate in local keystore to sign into Azure AD

  1. Maak een Service-Principal-certificaat met behulp van de opdracht Azure CLI AZ AD SP create-for-RBAC .Create a service principal certificate using the Azure CLI az ad sp create-for-rbac command.

    az ad sp create-for-rbac --create-cert
    

    Met deze opdracht maakt u een. pem-bestand (persoonlijke sleutel) dat is opgeslagen in uw basismap.This command creates a .pem file (private key) that's stored in your home directory. Implementeer dit certificaat in het LocalMachine -of het CurrentUser -archief.Deploy this certificate to either the LocalMachine or CurrentUser store.

    Belangrijk

    De CLI-opdracht genereert een. pem-bestand, maar Windows biedt alleen systeem eigen ondersteuning voor PFX-certificaten.The CLI command generates a .pem file, but Windows only provides native support for PFX certificates. Als u in plaats daarvan een PFX-certificaat wilt genereren, gebruikt u de Power shell-opdrachten die hier worden weer gegeven: een Service-Principal maken met een zelfondertekend certificaat.To generate a PFX certificate instead, use the PowerShell commands shown here: Create service principal with self-signed certificate. Met deze opdrachten wordt het certificaat automatisch geïmplementeerd.These commands automatically deploy the certificate as well.

  2. Stel een omgevings variabele met de naam AzureServicesAuthConnectionString in op de volgende waarde:Set an environment variable named AzureServicesAuthConnectionString to the following value:

    RunAs=App;AppId={AppId};TenantId={TenantId};CertificateThumbprint={Thumbprint};
          CertificateStoreLocation={CertificateStore}
    

    Vervang {AppId} , {TenantId} en {vinger afdruk} door de waarden die u in stap 1 hebt gegenereerd.Replace {AppId}, {TenantId}, and {Thumbprint} with values generated in Step 1. Vervang {CertificateStore} door LocalMachineof CurrentUser, op basis van uw implementatie plan.Replace {CertificateStore} with either LocalMachine` or CurrentUser, based on your deployment plan.

  3. Voer de toepassing uit.Run the application.

Een gedeelde geheime referentie gebruiken om u aan te melden bij Azure ADUse a shared secret credential to sign into Azure AD

  1. Maak een Service-Principal-certificaat met een wacht woord met behulp van de Azure CLI AZ AD SP create-for-RBAC opdracht met de para meter--SDK-auth.Create a service principal certificate with a password using the Azure CLI az ad sp create-for-rbac command with the --sdk-auth parameter.

    az ad sp create-for-rbac --sdk-auth
    
  2. Stel een omgevings variabele met de naam AzureServicesAuthConnectionString in op de volgende waarde:Set an environment variable named AzureServicesAuthConnectionString to the following value:

    RunAs=App;AppId={AppId};TenantId={TenantId};AppKey={ClientSecret}
    

    Vervang {AppId} , {TenantId} en {ClientSecret} door de waarden die u in stap 1 hebt gegenereerd.Replace {AppId}, {TenantId}, and {ClientSecret} with values generated in Step 1.

  3. Voer de toepassing uit.Run the application.

Als alles goed is ingesteld, zijn er geen verdere code wijzigingen nodig.Once everything's set up correctly, no further code changes are necessary. AzureServiceTokenProvider gebruikt de omgevings variabele en het certificaat om te verifiëren bij Azure AD.AzureServiceTokenProvider uses the environment variable and the certificate to authenticate to Azure AD.

Een certificaat in Key Vault gebruiken om u aan te melden bij Azure ADUse a certificate in Key Vault to sign into Azure AD

Met deze optie kunt u het client certificaat van een Service-Principal opslaan in Key Vault en dit gebruiken voor Service-Principal-verificatie.This option lets you store a service principal's client certificate in Key Vault and use it for service principal authentication. U kunt deze optie gebruiken voor de volgende scenario's:You may use this option for the following scenarios:

  • Lokale verificatie, waar u wilt verifiëren met behulp van een expliciete Service-Principal en u de Service-Principal-referenties veilig wilt laten in een sleutel kluis.Local authentication, where you want to authenticate using an explicit service principal, and want to keep the service principal credential securely in a key vault. Het ontwikkelaars account moet toegang hebben tot de sleutel kluis.Developer account must have access to the key vault.

  • Verificatie van Azure waarbij u een expliciete referentie wilt gebruiken en de Service-Principal-referenties veilig wilt laten in een sleutel kluis.Authentication from Azure where you want to use explicit credential and want to keep the service principal credential securely in a key vault. U kunt deze optie gebruiken voor een scenario met meerdere tenants.You might use this option for a cross-tenant scenario. De beheerde identiteit moet toegang hebben tot de sleutel kluis.Managed identity must have access to key vault.

De beheerde identiteit of uw ontwikkelaars identiteit moet gemachtigd zijn om het client certificaat op te halen uit de Key Vault.The managed identity or your developer identity must have permission to retrieve the client certificate from the Key Vault. De AppAuthentication-bibliotheek gebruikt het opgehaalde certificaat als de client referentie van de Service-Principal.The AppAuthentication library uses the retrieved certificate as the service principal's client credential.

Een client certificaat voor Service-Principal-verificatie gebruiken:To use a client certificate for service principal authentication:

  1. Maak een Service-Principal-certificaat en sla dit automatisch op in uw Key Vault.Create a service principal certificate and automatically store it in your Key Vault. Gebruik de Azure CLI AZ AD SP create-for-RBAC--sleutel kluis <keyvaultname >--cert <certificatename >--Create-CERT--Skip-Assignment opdracht:Use the Azure CLI az ad sp create-for-rbac --keyvault <keyvaultname> --cert <certificatename> --create-cert --skip-assignment command:

    az ad sp create-for-rbac --keyvault <keyvaultname> --cert <certificatename> --create-cert --skip-assignment
    

    De certificaat-id is een URL in de notatie https://<keyvaultname>.vault.azure.net/secrets/<certificatename>The certificate identifier will be a URL in the format https://<keyvaultname>.vault.azure.net/secrets/<certificatename>

  2. Vervang {KeyVaultCertificateSecretIdentifier} in dit connection string door de certificaat-id:Replace {KeyVaultCertificateSecretIdentifier} in this connection string with the certificate identifier:

    RunAs=App;AppId={TestAppId};KeyVaultCertificateSecretIdentifier={KeyVaultCertificateSecretIdentifier}
    

    Als uw sleutel kluis bijvoorbeeld myKeyVault heet en u een certificaat hebt gemaakt met de naam myCert, zou de certificaat-id er als volgt uitziet:For instance, if your key vault was called myKeyVault and you created a certificate called myCert, the certificate identifier would be:

    RunAs=App;AppId={TestAppId};KeyVaultCertificateSecretIdentifier=https://myKeyVault.vault.azure.net/secrets/myCert
    

Ondersteuning voor verbindings reeksConnection String Support

@No__t-0 maakt standaard gebruik van meerdere methoden om een token op te halen.By default, AzureServiceTokenProvider uses multiple methods to retrieve a token.

Als u het proces wilt beheren, gebruikt u een connection string dat is door gegeven aan de constructor AzureServiceTokenProvider of die is opgegeven in de omgevings variabele AzureServicesAuthConnectionString .To control the process, use a connection string passed to the AzureServiceTokenProvider constructor or specified in the AzureServicesAuthConnectionString environment variable.

De volgende opties worden ondersteund:The following options are supported:

Verbindings reeks optieConnection string option ScenarioScenario OpmerkingenComments
RunAs=Developer; DeveloperTool=AzureCli Lokale ontwikkelingLocal development AzureServiceTokenProvider gebruikt AzureCli om token op te halen.AzureServiceTokenProvider uses AzureCli to get token.
RunAs=Developer; DeveloperTool=VisualStudio Lokale ontwikkelingLocal development AzureServiceTokenProvider gebruikt Visual Studio om een token op te halen.AzureServiceTokenProvider uses Visual Studio to get token.
RunAs=CurrentUser Lokale ontwikkelingLocal development AzureServiceTokenProvider maakt gebruik van Azure AD Integrated-verificatie om token op te halen.AzureServiceTokenProvider uses Azure AD Integrated Authentication to get token.
RunAs=App Beheerde identiteiten voor Azure-resourcesManaged identities for Azure resources AzureServiceTokenProvider gebruikt een beheerde identiteit om een token op te halen.AzureServiceTokenProvider uses a managed identity to get token.
RunAs=App;AppId={ClientId of user-assigned identity} Door de gebruiker toegewezen identiteit voor Azure-resourcesUser-assigned identity for Azure resources AzureServiceTokenProvider gebruikt een door de gebruiker toegewezen identiteit voor het ophalen van token.AzureServiceTokenProvider uses a user-assigned identity to get token.
RunAs=App;AppId={TestAppId};KeyVaultCertificateSecretIdentifier={KeyVaultCertificateSecretIdentifier} Verificatie van aangepaste servicesCustom services authentication KeyVaultCertificateSecretIdentifier is de geheime id van het certificaat.KeyVaultCertificateSecretIdentifier is the certificate's secret identifier.
RunAs=App;AppId={AppId};TenantId={TenantId};CertificateThumbprint={Thumbprint};CertificateStoreLocation={LocalMachine or CurrentUser} Service-PrincipalService principal AzureServiceTokenProvider gebruikt certificaat om token van Azure AD op te halen.AzureServiceTokenProvider uses certificate to get token from Azure AD.
RunAs=App;AppId={AppId};TenantId={TenantId};CertificateSubjectName={Subject};CertificateStoreLocation={LocalMachine or CurrentUser} Service-PrincipalService principal AzureServiceTokenProvider gebruikt een certificaat om een token van Azure AD op te halenAzureServiceTokenProvider uses certificate to get token from Azure AD
RunAs=App;AppId={AppId};TenantId={TenantId};AppKey={ClientSecret} Service-PrincipalService principal AzureServiceTokenProvider gebruikt geheim om token van Azure AD op te halen.AzureServiceTokenProvider uses secret to get token from Azure AD.

VoorbeeldenSamples

Raadpleeg de volgende code voorbeelden om de Microsoft.Azure.Services.AppAuthentication-bibliotheek in actie te zien.To see the Microsoft.Azure.Services.AppAuthentication library in action, refer to the following code samples.

AppAuthentication problemen oplossenAppAuthentication Troubleshooting

Veelvoorkomende problemen tijdens de lokale ontwikkelingCommon issues during local development

Azure CLI is niet geïnstalleerd, u bent niet aangemeld of u hebt niet de nieuwste versieAzure CLI is not installed, you're not logged in, or you don't have the latest version

Voer AZ account Get-access-token uit om te zien of er voor Azure cli een token voor u wordt weer gegeven.Run az account get-access-token to see if Azure CLI shows a token for you. Als er geen dergelijk programma wordt gevonden, installeert u de nieuwste versie van de Azure cli.If it says no such program found, install the latest version of the Azure CLI. U wordt mogelijk gevraagd u aan te melden.You may be prompted to sign in.

AzureServiceTokenProvider kan het pad voor de Azure CLI niet vindenAzureServiceTokenProvider can't find the path for Azure CLI

AzureServiceTokenProvider zoekt naar Azure CLI op de standaard installatie locaties.AzureServiceTokenProvider looks for Azure CLI at its default install locations. Als Azure CLI niet kan worden gevonden, stelt u de omgevings variabele AzureCLIPath in op de installatiemap van Azure cli.If it can't find Azure CLI, set environment variable AzureCLIPath to the Azure CLI installation folder. Met AzureServiceTokenProvider wordt de omgevings variabele toegevoegd aan de omgevings variabele PATH.AzureServiceTokenProvider will add the environment variable to the Path environment variable.

U bent aangemeld bij Azure CLI met behulp van meerdere accounts, hetzelfde account heeft toegang tot abonnementen in meerdere tenants, of u krijgt een fout bericht over geweigerde toegang wanneer u aanroepen tijdens de lokale ontwikkeling probeert te doenYou're logged into Azure CLI using multiple accounts, the same account has access to subscriptions in multiple tenants, or you get an Access Denied error when trying to make calls during local development

Stel met behulp van Azure CLI het standaard abonnement in op een met het account dat u wilt gebruiken.Using Azure CLI, set the default subscription to one that has the account you want to use. Het abonnement moet zich in dezelfde Tenant bevallen als de resource die u wilt openen: AZ account set--Subscription [abonnement-id] .The subscription must be in the same tenant as the resource you want to access: az account set --subscription [subscription-id]. Als er geen uitvoer wordt weer gegeven, is deze geslaagd.If no output is seen, it succeeded. Controleer of het juiste account is ingesteld op de standaard waarde met AZ account list.Verify the right account is now the default using az account list.

Veelvoorkomende problemen in omgevingenCommon issues across environments

Onbevoegde toegang, toegang geweigerd, verboden of soort gelijke foutUnauthorized access, access denied, forbidden, or similar error

De gebruikte principal heeft geen toegang tot de resource waartoe deze toegang probeert te krijgen.The principal used doesn't have access to the resource it's trying to access. Verleen uw gebruikers account of het MSI-bestand van de App Service de toegang tot een bron.Grant either your user account or the App Service's MSI "Contributor" access to a resource. Welk exemplaar is afhankelijk van het feit of u het voor beeld uitvoert op uw lokale computer of in azure hebt geïmplementeerd op uw App Service.Which one depends on whether you're running the sample on your local computer or deployed in Azure to your App Service. Sommige resources, zoals sleutel kluizen, hebben ook een eigen toegangs beleid dat u kunt gebruiken om toegang te verlenen tot principals, zoals gebruikers, apps en groepen.Some resources, like key vaults, also have their own access policies that you use grant access to principals, such as users, apps, and groups.

Veelvoorkomende problemen bij de implementatie van Azure App ServiceCommon issues when deployed to Azure App Service

De beheerde identiteit is niet ingesteld op de App ServiceManaged identity isn't set up on the App Service

Controleer of de omgevings variabelen MSI_ENDPOINT en MSI_SECRET bestaan met behulp van de console voor fout opsporing van kudu.Check the environment variables MSI_ENDPOINT and MSI_SECRET exist using Kudu debug console. Als deze omgevings variabelen niet bestaan, is de beheerde identiteit niet ingeschakeld op de App Service.If these environment variables don't exist, Managed Identity isn't enabled on the App Service.

Veelvoorkomende problemen bij het lokaal implementeren met IISCommon issues when deployed locally with IIS

Kan geen tokens ophalen wanneer de app voor fout opsporing in IISCan't retrieve tokens when debugging app in IIS

AppAuth wordt standaard uitgevoerd in een andere gebruikers context in IIS.By default, AppAuth runs in a different user context in IIS. Daarom heeft het geen toegang tot het gebruik van uw ontwikkelaars identiteit voor het ophalen van toegangs tokens.That's why it doesn't have access to use your developer identity to retrieve access tokens. U kunt IIS zo configureren dat deze wordt uitgevoerd met uw gebruikers context, met de volgende twee stappen:You can configure IIS to run with your user context with the following two steps:

  • Configureer de groep van toepassingen voor de web-app die moet worden uitgevoerd als uw huidige gebruikers account.Configure the Application Pool for the web app to run as your current user account. Meer informatie vindt u hierSee more information here

  • Stel ' setProfileEnvironment ' in op ' True '.Configure "setProfileEnvironment" to "True". Meer informatie vindt u hier.See more information here.

    • Ga naar%windir%\System32\inetsrv\config\applicationHost.configGo to %windir%\System32\inetsrv\config\applicationHost.config
    • Zoek naar ' setProfileEnvironment '.Search for "setProfileEnvironment". Als de eigenschap is ingesteld op ' false ', wijzigt u deze in ' True '.If it's set to "False", change it to "True". Als deze niet aanwezig is, voegt u deze toe als een kenmerk voor het processModel-element (/configuration/system.applicationHost/applicationPools/applicationPoolDefaults/processModel/@setProfileEnvironment) en stelt u het in op ' True '.If it's not present, add it as an attribute to the processModel element (/configuration/system.applicationHost/applicationPools/applicationPoolDefaults/processModel/@setProfileEnvironment), and set it to "True".
  • Meer informatie over beheerde identiteiten voor Azure-resources.Learn more about managed identities for Azure resources.

  • Meer informatie over Azure AD-verificatie scenario's.Learn more about Azure AD authentication scenarios.