Cómo usar identidades administradas para App Service y Azure FunctionsHow to use managed identities for App Service and Azure Functions

Importante

Las identidades administradas de App Service y Azure Functions no se comportarán según lo esperado si la aplicación se migra entre suscripciones e inquilinos.Managed identities for App Service and Azure Functions will not behave as expected if your app is migrated across subscriptions/tenants. La aplicación necesitará obtener una nueva identidad, lo que se puede hacer deshabitando y volviendo a habilitar la función.The app will need to obtain a new identity, which can be done by disabling and re-enabling the feature. Consulte Eliminación de una identidad a continuación.See Removing an identity below. Los recursos de nivel inferior también necesitarán tener directivas de acceso actualizadas para utilizar la nueva identidad.Downstream resources will also need to have access policies updated to use the new identity.

En este tema se muestra cómo crear una identidad administrada para las aplicaciones App Service y Azure Functions y cómo usarla para acceder a otros recursos.This topic shows you how to create a managed identity for App Service and Azure Functions applications and how to use it to access other resources. Una identidad administrada de Azure Active Directory (AAD) permite a la aplicación acceder fácilmente a otros recursos protegidos por AAD, como Azure Key Vault.A managed identity from Azure Active Directory (AAD) allows your app to easily access other AAD-protected resources such as Azure Key Vault. La identidad está administrada por la plataforma Azure y no requiere que aprovisione o rote los secretos.The identity is managed by the Azure platform and does not require you to provision or rotate any secrets. Para más información sobre las identidades administradas en AAD, consulte Identidades administradas para recursos de Azure.For more about managed identities in AAD, see Managed identities for Azure resources.

La aplicación puede tener dos tipos de identidades:Your application can be granted two types of identities:

  • Una identidad asignada por el sistema está asociada a la aplicación y se elimina si se elimina la aplicación.A system-assigned identity is tied to your application and is deleted if your app is deleted. Una aplicación solo puede tener una identidad asignada por el sistema.An app can only have one system-assigned identity.
  • Una identidad asignada por el usuario es un recurso de Azure independiente que puede asignarse a la aplicación.A user-assigned identity is a standalone Azure resource that can be assigned to your app. Una aplicación puede tener varias identidades asignadas por el usuario.An app can have multiple user-assigned identities.

Adición de una identidad asignada por el sistemaAdd a system-assigned identity

Para crear una aplicación con una identidad asignada por el sistema se requiere la configuración de una propiedad adicional en la aplicación.Creating an app with a system-assigned identity requires an additional property to be set on the application.

Uso de Azure PortalUsing the Azure portal

Para configurar una identidad administrada en el portal, primero creará una aplicación como lo hace normalmente y, a continuación, habilitará la característica.To set up a managed identity in the portal, you will first create an application as normal and then enable the feature.

  1. Cree una aplicación en el portal como lo haría normalmente.Create an app in the portal as you normally would. Navegue hasta el portal.Navigate to it in the portal.

  2. Si utiliza una aplicación de función, vaya a Características de la plataforma.If using a function app, navigate to Platform features. Para otros tipos de aplicación, desplácese hacia abajo hasta el grupo Configuración en el panel de navegación izquierdo.For other app types, scroll down to the Settings group in the left navigation.

  3. Seleccione Identidad.Select Identity.

  4. En la pestaña Asignado por el sistema, cambie Estado a Activado.Within the System assigned tab, switch Status to On. Haga clic en Save(Guardar).Click Save.

    Identidad administrada en App Service

Uso de la CLI de AzureUsing the Azure CLI

Para configurar una identidad administrada mediante la CLI de Azure, deberá usar el comando az webapp identity assign en una aplicación existente.To set up a managed identity using the Azure CLI, you will need to use the az webapp identity assign command against an existing application. Tiene tres opciones para ejecutar los ejemplos de esta sección:You have three options for running the examples in this section:

Los siguientes pasos le guiarán por la creación de una aplicación web y la asignación a la misma de una identidad mediante la CLI:The following steps will walk you through creating a web app and assigning it an identity using the CLI:

  1. Si usa la CLI de Azure en una consola local, lo primero que debe hacer es iniciar sesión en Azure mediante el inicio de sesión de az.If you're using the Azure CLI in a local console, first sign in to Azure using az login. Use una cuenta asociada a la suscripción de Azure en la que desea implementar la aplicación:Use an account that's associated with the Azure subscription under which you would like to deploy the application:

    az login
    
  2. Cree una aplicación web mediante la CLI.Create a web application using the CLI. Para más ejemplos de cómo utilizar la CLI con App Service, consulte los ejemplos de la CLI de App Service:For more examples of how to use the CLI with App Service, see App Service CLI samples:

    az group create --name myResourceGroup --location westus
    az appservice plan create --name myPlan --resource-group myResourceGroup --sku S1
    az webapp create --name myApp --resource-group myResourceGroup --plan myPlan
    
  3. Ejecute el comando identity assign para crear la identidad de esta aplicación:Run the identity assign command to create the identity for this application:

    az webapp identity assign --name myApp --resource-group myResourceGroup
    

Uso de Azure PowerShellUsing Azure PowerShell

Nota

Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Aún puede usar el módulo de AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para más información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obtener instrucciones sobre la instalación del módulo Az, consulte Instalación de Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Los siguientes pasos le guiarán por la creación de una aplicación web y la asignación a la misma de una identidad mediante Azure PowerShell:The following steps will walk you through creating a web app and assigning it an identity using Azure PowerShell:

  1. Si es necesario, instale Azure PowerShell con las instrucciones que se encuentra en la guía de Azure PowerShell y luego ejecute Login-AzAccount para crear una conexión con Azure.If needed, install the Azure PowerShell using the instructions found in the Azure PowerShell guide, and then run Login-AzAccount to create a connection with Azure.

  2. Cree una aplicación web mediante Azure PowerShell.Create a web application using Azure PowerShell. Para ver más ejemplos de cómo utilizar Azure PowerShell con App Service, consulte los ejemplos de PowerShell de App Service:For more examples of how to use Azure PowerShell with App Service, see App Service PowerShell samples:

    # Create a resource group.
    New-AzResourceGroup -Name myResourceGroup -Location $location
    
    # Create an App Service plan in Free tier.
    New-AzAppServicePlan -Name $webappname -Location $location -ResourceGroupName myResourceGroup -Tier Free
    
    # Create a web app.
    New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname -ResourceGroupName myResourceGroup
    
  3. Ejecute el comando Set-AzWebApp -AssignIdentity para crear la identidad de esta aplicación:Run the Set-AzWebApp -AssignIdentity command to create the identity for this application:

    Set-AzWebApp -AssignIdentity $true -Name $webappname -ResourceGroupName myResourceGroup 
    

Uso de una plantilla de Azure Resource ManagerUsing an Azure Resource Manager template

Se puede utilizar una plantilla de Azure Resource Manager para automatizar la implementación de los recursos de Azure.An Azure Resource Manager template can be used to automate deployment of your Azure resources. Para obtener más información acerca de la implementación en App Service y Functions, vea Automating resource deployment in App Service (Automatización de la implementación de recursos en App Service) y Automatización de la implementación de recursos para una aplicación de función en Azure Functions.To learn more about deploying to App Service and Functions, see Automating resource deployment in App Service and Automating resource deployment in Azure Functions.

Se puede crear cualquier recurso de tipo Microsoft.Web/sites con una identidad mediante la inclusión de la siguiente propiedad en la definición de recursos:Any resource of type Microsoft.Web/sites can be created with an identity by including the following property in the resource definition:

"identity": {
    "type": "SystemAssigned"
}    

Nota

Una aplicación puede tener identidades asignadas por el sistema y asignadas por el usuario al mismo tiempo.An application can have both system-assigned and user-assigned identities at the same time. En este caso, la propiedad type sería SystemAssigned,UserAssigned.In this case, the type property would be SystemAssigned,UserAssigned

Al agregar el tipo asignado por el sistema se indica a Azure que debe crear y administrar la identidad para la aplicación.Adding the system-assigned type tells Azure to create and manage the identity for your application.

Por ejemplo, una aplicación web podría tener el aspecto siguiente:For example, a web app might look like the following:

{
    "apiVersion": "2016-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('appName')]",
    "location": "[resourceGroup().location]",
    "identity": {
        "type": "SystemAssigned"
    },
    "properties": {
        "name": "[variables('appName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "hostingEnvironment": "",
        "clientAffinityEnabled": false,
        "alwaysOn": true
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
    ]
}

Cuando se crea el sitio, tiene las siguientes propiedades adicionales:When the site is created, it has the following additional properties:

"identity": {
    "type": "SystemAssigned",
    "tenantId": "<TENANTID>",
    "principalId": "<PRINCIPALID>"
}

La propiedad tenantId identifica a qué inquilino AAD pertenece la identidad.The tenantId property identifies what AAD tenant the identity belongs to. El valor principalId es un identificador único para la nueva identidad de la aplicación.The principalId is a unique identifier for the application's new identity. En AAD, la entidad de servicio tiene el mismo nombre que asignó a la instancia de App Service o Azure Functions.Within AAD, the service principal has the same name that you gave to your App Service or Azure Functions instance.

Adición de una identidad asignada por el usuarioAdd a user-assigned identity

La creación de una aplicación con una identidad asignada por el usuario requiere que se cree la identidad y luego se agregue su identificador de recurso a la configuración de la aplicación.Creating an app with a user-assigned identity requires that you create the identity and then add its resource identifier to your app config.

Uso de Azure PortalUsing the Azure portal

En primer lugar, tendrá que crear un recurso de identidad asignada por el usuario.First, you'll need to create a user-assigned identity resource.

  1. Cree un recurso de identidad administrada asignada por el usuario según estas instrucciones.Create a user-assigned managed identity resource according to these instructions.

  2. Cree una aplicación en el portal como lo haría normalmente.Create an app in the portal as you normally would. Navegue hasta el portal.Navigate to it in the portal.

  3. Si utiliza una aplicación de función, vaya a Características de la plataforma.If using a function app, navigate to Platform features. Para otros tipos de aplicación, desplácese hacia abajo hasta el grupo Configuración en el panel de navegación izquierdo.For other app types, scroll down to the Settings group in the left navigation.

  4. Seleccione Identidad.Select Identity.

  5. En la pestaña Usuario asignado, haga clic Agregar.Within the User assigned tab, click Add.

  6. Busque la identidad que creó anteriormente y selecciónela.Search for the identity you created earlier and select it. Haga clic en Agregar.Click Add.

    Identidad administrada en App Service

Uso de una plantilla de Azure Resource ManagerUsing an Azure Resource Manager template

Se puede utilizar una plantilla de Azure Resource Manager para automatizar la implementación de los recursos de Azure.An Azure Resource Manager template can be used to automate deployment of your Azure resources. Para obtener más información acerca de la implementación en App Service y Functions, vea Automating resource deployment in App Service (Automatización de la implementación de recursos en App Service) y Automatización de la implementación de recursos para una aplicación de función en Azure Functions.To learn more about deploying to App Service and Functions, see Automating resource deployment in App Service and Automating resource deployment in Azure Functions.

Se puede crear cualquier recurso de tipo Microsoft.Web/sites con una identidad incluyendo el siguiente bloque en la definición del recurso, que reemplaza <RESOURCEID> por el identificador de recurso de la identidad deseada:Any resource of type Microsoft.Web/sites can be created with an identity by including the following block in the resource definition, replacing <RESOURCEID> with the resource ID of the desired identity:

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<RESOURCEID>": {}
    }
}    

Nota

Una aplicación puede tener identidades asignadas por el sistema y asignadas por el usuario al mismo tiempo.An application can have both system-assigned and user-assigned identities at the same time. En este caso, la propiedad type sería SystemAssigned,UserAssigned.In this case, the type property would be SystemAssigned,UserAssigned

Al agregar el tipo asignado por el usuario se indica a Azure que use la identidad asignada por el usuario especificada para la aplicación.Adding the user-assigned type tells Azure to use the user-assigned identity specified for your application.

Por ejemplo, una aplicación web podría tener el aspecto siguiente:For example, a web app might look like the following:

{
    "apiVersion": "2016-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('appName')]",
    "location": "[resourceGroup().location]",
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {}
        }
    },
    "properties": {
        "name": "[variables('appName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "hostingEnvironment": "",
        "clientAffinityEnabled": false,
        "alwaysOn": true
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
    ]
}

Cuando se crea el sitio, tiene las siguientes propiedades adicionales:When the site is created, it has the following additional properties:

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<RESOURCEID>": {
            "principalId": "<PRINCIPALID>",
            "clientId": "<CLIENTID>"
        }
    }
}

El valor principalId es un identificador único de la identidad que se usa para la administración de AAD.The principalId is a unique identifier for the identity that's used for AAD administration. El valor clientId es un identificador único de la nueva identidad de la aplicación que se usa para especificar qué identidad utilizar durante las llamadas de runtime.The clientId is a unique identifier for the application's new identity that's used for specifying which identity to use during runtime calls.

Obtención de tokens para recursos de AzureObtain tokens for Azure resources

Una aplicación puede utilizar su identidad administrada para obtener tokens de acceso a otros recursos protegidos por AAD, como Azure Key Vault.An app can use its managed identity to get tokens to access other resources protected by AAD, such as Azure Key Vault. Estos tokens representan a la aplicación que accede al recurso, y no a un usuario específico de la aplicación.These tokens represent the application accessing the resource, and not any specific user of the application.

Es posible que tenga que configurar el recurso de destino para permitir el acceso desde la aplicación.You may need to configure the target resource to allow access from your application. Por ejemplo, si se solicita un token para acceder a Key Vault, debe asegurarse de que ha agregado una directiva de acceso que incluya la identidad de la aplicación.For example, if you request a token to access Key Vault, you need to make sure you have added an access policy that includes your application's identity. De lo contrario, las llamadas a Key Vault se rechazarán, incluso si incluyen el token.Otherwise, your calls to Key Vault will be rejected, even if they include the token. Para más información sobre los recursos que admiten tokens de Azure Active Directory, consulte Servicios de Azure que admiten autenticación de Azure AD.To learn more about which resources support Azure Active Directory tokens, see Azure services that support Azure AD authentication.

Importante

Los servicios de back-end para identidades administradas mantienen una memoria caché por URI de recurso durante unas ocho horas.The back-end services for managed identities maintain a cache per resource URI for around 8 hours. Si actualiza la directiva de acceso de un recurso de destino determinado y recupera inmediatamente un token para ese recurso, es posible que siga obteniendo un token en caché con permisos obsoletos hasta la expiración del token.If you update the access policy of a particular target resource and immediately retrieve a token for that resource, you may continue to get a cached token with outdated permissions until that token expires. Actualmente no existe ninguna forma de forzar la actualización de un token.There's currently no way to force a token refresh.

Hay un protocolo de REST sencillo para obtener un token en App Service y Azure Functions.There is a simple REST protocol for obtaining a token in App Service and Azure Functions. Se puede usar con todas las aplicaciones y todos los lenguajes.This can be used for all applications and languages. En el caso de .NET y Java, el SDK de Azure ofrece una abstracción sobre este protocolo y facilita una experiencia de desarrollo local.For .NET and Java, the Azure SDK provides an abstraction over this protocol and facilitates a local development experience.

Uso del protocolo de RESTUsing the REST protocol

Una aplicación con una identidad administrada tiene dos variables de entorno definidas:An app with a managed identity has two environment variables defined:

  • MSI_ENDPOINT: dirección URL del servicio de token local.MSI_ENDPOINT - the URL to the local token service.
  • MSI_SECRET: encabezado que se usa para ayudar a mitigar los ataques de falsificación de solicitudes del servidor (SSRF).MSI_SECRET - a header used to help mitigate server-side request forgery (SSRF) attacks. La plataforma se encarga de cambiarlo.The value is rotated by the platform.

La variable MSI_ENDPOINT es una dirección URL local desde la que la aplicación puede solicitar tokens.The MSI_ENDPOINT is a local URL from which your app can request tokens. Para obtener un token para un recurso, realice una solicitud HTTP GET para este punto de conexión, incluyendo los parámetros siguientes:To get a token for a resource, make an HTTP GET request to this endpoint, including the following parameters:

Nombre de parámetroParameter name EnIn DescripciónDescription
resourceresource ConsultarQuery El URI del recurso del recurso AAD para el que se debe obtener un token.The AAD resource URI of the resource for which a token should be obtained. Este podría ser uno de los servicios de Azure que admiten la autenticación de Azure AD o cualquier otro URI de recurso.This could be one of the Azure services that support Azure AD authentication or any other resource URI.
api-versionapi-version ConsultarQuery La versión de la API de token que se usará.The version of the token API to be used. Actualmente, la única versión admitida es "2017-09-01"."2017-09-01" is currently the only version supported.
secretsecret EncabezadoHeader El valor de la variable de entorno MSI_SECRET.The value of the MSI_SECRET environment variable. Este encabezado se utiliza para ayudar a mitigar los ataques de falsificación de solicitudes del servidor (SSRF).This header is used to help mitigate server-side request forgery (SSRF) attacks.
clientidclientid ConsultarQuery (Opcional a menos que lo haya asignado el usuario) El id. de la identidad que asignó el usuario que se va a usar.(Optional unless for user-assigned) The ID of the user-assigned identity to be used. Si se omite, se usa la identidad asignada por el sistema.If omitted, the system-assigned identity is used.

Importante

Si intenta obtener tokens para las identidades que asignó el usuario, debe incluir la propiedad clientid.If you are attempting to obtain tokens for user-assigned identities, you must include the clientid property. De lo contrario, el servicio de token intentará obtener un token para una identidad que haya asignado el sistema, la cual puede existir o no.Otherwise the token service will attempt to obtain a token for a system-assigned identity, which may or may not exist.

Una respuesta 200 OK incluye un cuerpo JSON con las siguientes propiedades:A successful 200 OK response includes a JSON body with the following properties:

Nombre de propiedadProperty name DescripciónDescription
access_tokenaccess_token El token de acceso solicitado.The requested access token. El servicio web de llamada puede usar este token para autenticarse en el servicio web de recepción.The calling web service can use this token to authenticate to the receiving web service.
expires_onexpires_on La hora a la que expira el token de acceso.The time when the access token expires. La fecha se representa como el número de segundos desde 1970-01-01T0:0:0Z UTC hasta la fecha de expiración.The date is represented as the number of seconds from 1970-01-01T0:0:0Z UTC until the expiration time. Este valor se utiliza para determinar la duración de los tokens almacenados en caché.This value is used to determine the lifetime of cached tokens.
resourceresource El URI del identificador de la aplicación del servicio web de recepción.The App ID URI of the receiving web service.
token_typetoken_type Indica el valor de tipo de token.Indicates the token type value. El único tipo que admite Azure AD es portador.The only type that Azure AD supports is Bearer. Para más información sobre los tokens de portador, consulte The OAuth2.0 Authorization Framework: Bearer Token Usage (RFC 6750) (Marco de autorización de OAuth2.0: uso del token de portador [RFC 6750]).For more information about bearer tokens, see The OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750).

Esta respuesta es la misma que la respuesta para la solicitud de token de acceso de servicio a servicio de AAD.This response is the same as the response for the AAD service-to-service access token request.

Nota

Las variables de entorno se configuran cuando el proceso se inicia por primera vez, por lo que después de habilitar una identidad administrada para la aplicación puede que necesite reiniciar la aplicación, o implementar de nuevo su código, antes de que MSI_ENDPOINT y MSI_SECRET estén disponibles en el código.Environment variables are set up when the process first starts, so after enabling a managed identity for your application, you may need to restart your application, or redeploy its code, before MSI_ENDPOINT and MSI_SECRET are available to your code.

Ejemplos de protocolo de RESTREST protocol examples

Una solicitud de ejemplo puede tener el siguiente aspecto:An example request might look like the following:

GET /MSI/token?resource=https://vault.azure.net&api-version=2017-09-01 HTTP/1.1
Host: localhost:4141
Secret: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a

Y una respuesta de ejemplo puede tener el siguiente aspecto:And a sample response might look like the following:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJ0eXAi…",
    "expires_on": "09/14/2017 00:00:00 PM +00:00",
    "resource": "https://vault.azure.net",
    "token_type": "Bearer"
}

Ejemplos de códigoCode examples

Sugerencia

Para los lenguajes. NET, también puede usar Microsoft.Azure.Services.AppAuthentication en lugar de crear esta solicitud personalmente.For .NET languages, you can also use Microsoft.Azure.Services.AppAuthentication instead of crafting this request yourself.

private readonly HttpClient _client;
// ...
public async Task<HttpResponseMessage> GetToken(string resource)  {
    var request = new HttpRequestMessage(HttpMethod.Get, 
        String.Format("{0}/?resource={1}&api-version=2017-09-01", Environment.GetEnvironmentVariable("MSI_ENDPOINT"), resource));
    request.Headers.Add("Secret", Environment.GetEnvironmentVariable("MSI_SECRET"));
    return await _client.SendAsync(request);
}

Uso de la biblioteca Microsoft.Azure.Services.AppAuthentication para .NETUsing the Microsoft.Azure.Services.AppAuthentication library for .NET

En el caso de aplicaciones y funciones de .NET, la manera más sencilla de trabajar con una identidad administrada es usar el paquete Microsoft.Azure.Services.AppAuthentication.For .NET applications and functions, the simplest way to work with a managed identity is through the Microsoft.Azure.Services.AppAuthentication package. Esta biblioteca también le permite probar el código localmente en la máquina de desarrollo, con su cuenta de usuario de Visual Studio, la CLI de Azure o la autenticación integrada de Active Directory.This library will also allow you to test your code locally on your development machine, using your user account from Visual Studio, the Azure CLI, or Active Directory Integrated Authentication. Para obtener más información sobre las opciones de desarrollo local con esta biblioteca, consulte la referencia de Microsoft.Azure.Services.AppAuthentication.For more on local development options with this library, see the Microsoft.Azure.Services.AppAuthentication reference. En esta sección se muestra cómo empezar a usar la biblioteca en su código.This section shows you how to get started with the library in your code.

  1. Agregue referencias a los paquetes de NuGet Microsoft.Azure.Services.AppAuthentication y a otros paquetes necesarios para la aplicación.Add references to the Microsoft.Azure.Services.AppAuthentication and any other necessary NuGet packages to your application. El ejemplo siguiente también usa Microsoft.Azure.KeyVault.The below example also uses Microsoft.Azure.KeyVault.

  2. Agregue el código siguiente a la aplicación, modificándolo para que tenga como destino el recurso correcto.Add the following code to your application, modifying to target the correct resource. En este ejemplo se muestran dos formas de trabajar con Azure Key Vault:This example shows two ways to work with Azure Key Vault:

    using Microsoft.Azure.Services.AppAuthentication;
    using Microsoft.Azure.KeyVault;
    // ...
    var azureServiceTokenProvider = new AzureServiceTokenProvider();
    string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://vault.azure.net");
    // OR
    var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
    

Para obtener más información sobre Microsoft.Azure.Services.AppAuthentication y las operaciones que expone, consulte la referencia de Microsoft.Azure.Services.AppAuthentication y el ejemplo de .NET sobre App Service y KeyVault con MSI.To learn more about Microsoft.Azure.Services.AppAuthentication and the operations it exposes, see the Microsoft.Azure.Services.AppAuthentication reference and the App Service and KeyVault with MSI .NET sample.

Uso del SDK de Azure para JavaUsing the Azure SDK for Java

Para aplicaciones y funciones de Java, la manera más sencilla de trabajar con una identidad administrada es con el SDK de Azure para Java.For Java applications and functions, the simplest way to work with a managed identity is through the Azure SDK for Java. En esta sección se muestra cómo empezar a usar la biblioteca en su código.This section shows you how to get started with the library in your code.

  1. Agregue una referencia a la biblioteca de Azure SDK.Add a reference to the Azure SDK library. Para los proyectos de Maven, puede agregar este fragmento de código a la sección dependencies del archivo POM del proyecto:For Maven projects, you might add this snippet to the dependencies section of the project's POM file:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure</artifactId>
        <version>1.23.0</version>
    </dependency>
    
  2. Use el objeto AppServiceMSICredentials para la autenticación.Use the AppServiceMSICredentials object for authentication. En este ejemplo se muestra cómo se puede utilizar este mecanismo para trabajar con Azure Key Vault:This example shows how this mechanism may be used for working with Azure Key Vault:

    import com.microsoft.azure.AzureEnvironment;
    import com.microsoft.azure.management.Azure;
    import com.microsoft.azure.management.keyvault.Vault
    //...
    Azure azure = Azure.authenticate(new AppServiceMSICredentials(AzureEnvironment.AZURE))
            .withSubscription(subscriptionId);
    Vault myKeyVault = azure.vaults().getByResourceGroup(resourceGroup, keyvaultName);
    
    

Eliminación de una identidadRemove an identity

Para quitar una identidad asignada por el sistema, deshabilite la función mediante el portal, PowerShell o la CLI de la misma forma en que se creó.A system-assigned identity can be removed by disabling the feature using the portal, PowerShell, or CLI in the same way that it was created. Las identidades asignadas por el usuario se pueden quitar individualmente.User-assigned identities can be removed individually. Para quitar todas las identidades, establezca el tipo en "Ninguno" en la plantilla de Resource Manager:To remove all identities, set the type to "None" in the ARM template:

"identity": {
    "type": "None"
}

Al quitar una identidad asignada por el sistema de esta manera también se eliminará de AAD.Removing a system-assigned identity in this way will also delete it from AAD. Las identidades asignadas por el sistema también se quitan automáticamente de AAD cuando se elimina el recurso de la aplicación.System-assigned identities are also automatically removed from AAD when the app resource is deleted.

Nota

También hay una configuración de aplicación que se puede establecer, WEBSITE_DISABLE_MSI, que simplemente deshabilita el servicio de token local.There is also an application setting that can be set, WEBSITE_DISABLE_MSI, which just disables the local token service. Sin embargo, deja la identidad en su lugar, y las herramientas seguirán mostrando la identidad administrada como "activada" o "habilitada".However, it leaves the identity in place, and tooling will still show the managed identity as "on" or "enabled." Como resultado, no se recomienda el uso de esta configuración.As a result, use of this setting is not recommended.

Pasos siguientesNext steps