App Service ve Azure Işlevleri için Yönetilen kimlikler kullanmaHow to use managed identities for App Service and Azure Functions

Önemli

App Service ve Azure Işlevleri için Yönetilen kimlikler, uygulamanız abonelikler/kiracılar arasında geçirilirse beklendiği gibi davranmaz.Managed identities for App Service and Azure Functions will not behave as expected if your app is migrated across subscriptions/tenants. Uygulamanın, özelliği devre dışı bırakıp yeniden etkinleştirerek yapılabilecek yeni bir kimlik alması gerekir.The app will need to obtain a new identity, which can be done by disabling and re-enabling the feature. Aşağıdaki kimliği kaldırma bölümüne bakın.See Removing an identity below. Aşağı akış kaynakları, yeni kimliği kullanmak için erişim ilkelerinin güncelleştirilmesini de gerekecektir.Downstream resources will also need to have access policies updated to use the new identity.

Bu konu, App Service ve Azure Işlevleri uygulamaları için yönetilen bir kimlik oluşturmayı ve diğer kaynaklara erişmek için nasıl kullanılacağını gösterir.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. Azure Active Directory’de yönetilen bir kimlik, uygulamanızın Azure Key Vault gibi AAD korumalı kaynaklara kolayca ulaşmasını sağlar.A managed identity from Azure Active Directory allows your app to easily access other AAD-protected resources such as Azure Key Vault. Kimlik, Azure platformu tarafından yönetilir ve herhangi bir gizli dizi sağlamanızı veya döndürmenizi gerektirmez.The identity is managed by the Azure platform and does not require you to provision or rotate any secrets. AAD 'deki Yönetilen kimlikler hakkında daha fazla bilgi için bkz. Azure kaynakları Için Yönetilen kimlikler.For more about managed identities in AAD, see Managed identities for Azure resources.

Uygulamanıza iki tür kimlik verilebilir:Your application can be granted two types of identities:

  • Sistem tarafından atanan bir kimlik uygulamanıza bağlanır ve uygulamanız silinirse silinir.A system-assigned identity is tied to your application and is deleted if your app is deleted. Uygulamanın yalnızca bir sistem tarafından atanmış kimliği olabilir.An app can only have one system-assigned identity.
  • Kullanıcı tarafından atanan bir kimlik , uygulamanıza atanabilecek tek başına bir Azure kaynağıdır.A user-assigned identity is a standalone Azure resource which can be assigned to your app. Bir uygulamada birden çok kullanıcı tarafından atanan kimlik olabilir.An app can have multiple user-assigned identities.

Sistem tarafından atanan kimlik eklemeAdding a system-assigned identity

Sistem tarafından atanan kimlik ile uygulama oluşturmak, uygulamada ek bir özellik ayarlanmasını gerektirir.Creating an app with a system-assigned identity requires an additional property to be set on the application.

Azure portalını kullanmaUsing the Azure portal

Portalda yönetilen bir kimlik ayarlamak için öncelikle normal olarak bir uygulama oluşturun ve ardından özelliği etkinleştirmeniz gerekir.To set up a managed identity in the portal, you will first create an application as normal and then enable the feature.

  1. Portalda genellikle yaptığınız gibi bir uygulama oluşturun.Create an app in the portal as you normally would. Portalda bu sayfaya gidin.Navigate to it in the portal.

  2. Bir işlev uygulaması kullanıyorsanız, platform özellikleri' ne gidin.If using a function app, navigate to Platform features. Diğer uygulama türleri için, sol gezinti bölmesinde Ayarlar grubuna gidin.For other app types, scroll down to the Settings group in the left navigation.

  3. Yönetilen kimlik' i seçin.Select Managed identity.

  4. Sistem atandı sekmesinde durumu Açıkolarak değiştirin.Within the System assigned tab, switch Status to On. Kaydet’e tıklayın.Click Save.

App Service yönetilen kimliği

Azure CLI kullanmaUsing the Azure CLI

Azure CLI kullanarak yönetilen bir kimlik ayarlamak için, mevcut bir uygulamada az webapp identity assign komutunu kullanmanız gerekir.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. Bu bölümde örnekleri çalıştırmak için üç seçeneğiniz vardır:You have three options for running the examples in this section:

Aşağıdaki adımlar, bir Web uygulaması oluşturma ve CLı kullanarak bir kimlik atama işleminde size kılavuzluk eder:The following steps will walk you through creating a web app and assigning it an identity using the CLI:

  1. Azure CLI'yi yerel bir konsolda kullanıyorsanız, önce az login kullanarak Azure'da oturum açın.If you're using the Azure CLI in a local console, first sign in to Azure using az login. Uygulamayı dağıtmak istediğiniz Azure aboneliğiyle ilişkili bir hesabı kullanın:Use an account that is associated with the Azure subscription under which you would like to deploy the application:

    az login
    
  2. CLı kullanarak bir Web uygulaması oluşturun.Create a web application using the CLI. CLı 'yı App Service ile kullanma hakkında daha fazla örnek için bkz. App SERVICE CLI örnekleri: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. Bu uygulamanın kimliğini oluşturmak için komutunuçalıştırın:identity assignRun the identity assign command to create the identity for this application:

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

Azure PowerShell’i kullanmaUsing Azure PowerShell

Not

Bu makale yeni Azure PowerShell Az modülünü kullanacak şekilde güncelleştirilmiştir.This article has been updated to use the new Azure PowerShell Az module. En azından Aralık 2020'ye kadar hata düzeltmeleri almaya devam edecek olan AzureRM modülünü de kullanmaya devam edebilirsiniz.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Yeni Az modülüyle AzureRM'nin uyumluluğu hakkında daha fazla bilgi edinmek için bkz. Yeni Azure PowerShell Az modülüne giriş.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az modülü yükleme yönergeleri için bkz. Azure PowerShell'i yükleme.For Az module installation instructions, see Install Azure PowerShell.

Aşağıdaki adımlar, bir Web uygulaması oluşturma ve Azure PowerShell kullanarak bir kimlik atama işleminde size yol gösterecektir:The following steps will walk you through creating a web app and assigning it an identity using Azure PowerShell:

  1. Gerekirse, Azure PowerShell kılavuzunda bulunan yönergeleri kullanarak Azure PowerShell’i yükleyin ve ardından Azure ile bağlantı oluşturmak için Login-AzAccount komutunu çalıştırın.If needed, install the Azure PowerShell using the instruction found in the Azure PowerShell guide, and then run Login-AzAccount to create a connection with Azure.

  2. Azure PowerShell kullanarak bir Web uygulaması oluşturun.Create a web application using Azure PowerShell. App Service Azure PowerShell kullanma hakkında daha fazla örnek için bkz. App Service PowerShell örnekleri: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. Bu uygulamanın kimliğini oluşturmak için komutunuçalıştırın:Set-AzWebApp -AssignIdentityRun the Set-AzWebApp -AssignIdentity command to create the identity for this application:

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

Azure Resource Manager şablonu kullanmaUsing an Azure Resource Manager template

Azure Resource Manager şablonu, Azure kaynaklarınızın dağıtımını otomatikleştirmek için kullanılabilir.An Azure Resource Manager template can be used to automate deployment of your Azure resources. App Service ve Işlevlerine dağıtma hakkında daha fazla bilgi edinmek için bkz. App Service kaynak dağıtımını otomatikleştirme ve Azure Işlevlerinde kaynak dağıtımını otomatikleştirme.To learn more about deploying to App Service and Functions, see Automating resource deployment in App Service and Automating resource deployment in Azure Functions.

Kaynak tanımına aşağıdaki özelliği Microsoft.Web/sites ekleyerek, herhangi bir kaynak türü bir kimlikle oluşturulabilir: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"
}    

Not

Bir uygulama aynı anda hem sistem tarafından hem de Kullanıcı tarafından atanan kimliklere sahip olabilir.An application can have both system-assigned and user-assigned identities at the same time. Bu durumda, type özelliğiSystemAssigned,UserAssignedIn this case, the type property would be SystemAssigned,UserAssigned

Sistem tarafından atanan tür eklendiğinde Azure, uygulamanız için kimlik oluşturma ve yönetme konusunda sizi söyler.Adding the system-assigned type tells Azure to create and manage the identity for your application.

Örneğin, bir Web uygulaması aşağıdaki gibi görünebilir: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'))]"
    ]
}

Site oluşturulduğunda, aşağıdaki ek özelliklere sahiptir:When the site is created, it has the following additional properties:

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

Burada <TENANTID> ve<PRINCIPALID> , GUID 'ler ile değiştirilmiştir.Where <TENANTID> and <PRINCIPALID> are replaced with GUIDs. Tenantıd özelliği, kimliğin ait olduğu AAD kiracısının ne olduğunu tanımlar.The tenantId property identifies what AAD tenant the identity belongs to. PrincipalId, uygulamanın yeni kimliği için benzersiz bir tanımlayıcıdır.The principalId is a unique identifier for the application's new identity. AAD 'de, hizmet sorumlusu App Service veya Azure Işlevleri Örneğinizde verdiğiniz aynı ada sahiptir.Within AAD, the service principal has the same name that you gave to your App Service or Azure Functions instance.

Kullanıcı tarafından atanan kimlik eklemeAdding a user-assigned identity

Kullanıcı tarafından atanan kimlik ile uygulama oluşturmak için kimlik oluşturmanız ve ardından kaynak tanımlayıcısını uygulama yapılandırmaya eklemeniz gerekir.Creating an app with a user-assigned identity requires that you create the identity and then add its resource identifier to your app config.

Azure portalını kullanmaUsing the Azure portal

İlk olarak, Kullanıcı tarafından atanan bir kimlik kaynağı oluşturmanız gerekir.First, you'll need to create a user-assigned identity resource.

  1. Bu yönergeleregöre Kullanıcı tarafından atanan bir yönetilen kimlik kaynağı oluşturun.Create a user-assigned managed identity resource according to these instructions.

  2. Portalda genellikle yaptığınız gibi bir uygulama oluşturun.Create an app in the portal as you normally would. Portalda bu sayfaya gidin.Navigate to it in the portal.

  3. Bir işlev uygulaması kullanıyorsanız, platform özellikleri' ne gidin.If using a function app, navigate to Platform features. Diğer uygulama türleri için, sol gezinti bölmesinde Ayarlar grubuna gidin.For other app types, scroll down to the Settings group in the left navigation.

  4. Yönetilen kimlik' i seçin.Select Managed identity.

  5. Kullanıcı atandı sekmesinde Ekle' ye tıklayın.Within the User assigned tab, click Add.

  6. Daha önce oluşturduğunuz kimliği arayın ve seçin.Search for the identity you created earlier and select it. Ekle'yi tıklatın.Click Add.

App Service yönetilen kimliği

Azure Resource Manager şablonu kullanmaUsing an Azure Resource Manager template

Azure Resource Manager şablonu, Azure kaynaklarınızın dağıtımını otomatikleştirmek için kullanılabilir.An Azure Resource Manager template can be used to automate deployment of your Azure resources. App Service ve Işlevlerine dağıtma hakkında daha fazla bilgi edinmek için bkz. App Service kaynak dağıtımını otomatikleştirme ve Azure Işlevlerinde kaynak dağıtımını otomatikleştirme.To learn more about deploying to App Service and Functions, see Automating resource deployment in App Service and Automating resource deployment in Azure Functions.

Kaynak tanımına aşağıdaki blok Microsoft.Web/sites eklenerek, istenen kimliğin kaynak kimliği ile değiştirilerek <RESOURCEID> bir kimlik ile herhangi bir kaynak oluşturulabilir: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>": {}
    }
}    

Not

Bir uygulama aynı anda hem sistem tarafından hem de Kullanıcı tarafından atanan kimliklere sahip olabilir.An application can have both system-assigned and user-assigned identities at the same time. Bu durumda, type özelliğiSystemAssigned,UserAssignedIn this case, the type property would be SystemAssigned,UserAssigned

Kullanıcı tarafından atanan tür ve bir Code eklemek, Azure 'un uygulamanız için kimlik oluşturup yönetmesine yardımcı olduğunu bildirir.Adding the user-assigned type and a cotells Azure to create and manage the identity for your application.

Örneğin, bir Web uygulaması aşağıdaki gibi görünebilir: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'))]"
    ]
}

Site oluşturulduğunda, aşağıdaki ek özelliklere sahiptir:When the site is created, it has the following additional properties:

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

Burada <PRINCIPALID> ve<CLIENTID> , GUID 'ler ile değiştirilmiştir.Where <PRINCIPALID> and <CLIENTID> are replaced with GUIDs. PrincipalId, AAD yönetimi için kullanılan kimlik için benzersiz bir tanımlayıcıdır.The principalId is a unique identifier for the identity which is used for AAD administration. ClientID, uygulamanın çalışma zamanı çağrıları sırasında hangi kimliğin kullanılacağını belirtmek için kullanılan yeni kimliği için benzersiz bir tanımlayıcıdır.The clientId is a unique identifier for the application's new identity that is used for specifying which identity to use during runtime calls.

Azure kaynakları için belirteçleri almaObtaining tokens for Azure resources

Bir uygulama, Azure Key Vault gibi AAD tarafından korunan diğer kaynaklara belirteç almak için kimliğini kullanabilir.An app can use its identity to get tokens to other resources protected by AAD, such as Azure Key Vault. Bu belirteçler, uygulamanın belirli bir kullanıcısı değil, kaynağa erişen uygulamayı temsil eder.These tokens represent the application accessing the resource, and not any specific user of the application.

Önemli

Uygulamanızdaki erişime izin vermek için hedef kaynağı yapılandırmanız gerekebilir.You may need to configure the target resource to allow access from your application. Örneğin, Key Vault için bir belirteç istemeniz durumunda uygulamanızın kimliğini içeren bir erişim ilkesi eklediğinizden emin olmanız gerekir.For example, if you request a token to Key Vault, you need to make sure you have added an access policy that includes your application's identity. Aksi takdirde, belirteci içerse bile Key Vault çağrılarınız reddedilir.Otherwise, your calls to Key Vault will be rejected, even if they include the token. Azure Active Directory belirteçlerini destekleyen kaynaklar hakkında daha fazla bilgi edinmek için bkz. Azure AD kimlik doğrulamasını destekleyen Azure hizmetleri.To learn more about which resources support Azure Active Directory tokens, see Azure services that support Azure AD authentication.

App Service ve Azure Işlevlerinde belirteç almak için basit bir REST Protokolü vardır.There is a simple REST protocol for obtaining a token in App Service and Azure Functions. .NET uygulamaları için Microsoft. Azure. Services. AppAuthentication kitaplığı, bu protokol üzerinden bir soyutlama sağlar ve yerel bir geliştirme deneyimini destekler.For .NET applications, the Microsoft.Azure.Services.AppAuthentication library provides an abstraction over this protocol and supports a local development experience.

.NET için Microsoft. Azure. Services. AppAuthentication kitaplığını kullanmaUsing the Microsoft.Azure.Services.AppAuthentication library for .NET

.NET uygulamaları ve işlevleri için, yönetilen bir kimlikle çalışmanın en kolay yolu Microsoft. Azure. Services. AppAuthentication paketi aracılığıyla yapılır.For .NET applications and functions, the simplest way to work with a managed identity is through the Microsoft.Azure.Services.AppAuthentication package. Bu kitaplık Ayrıca, Visual Studio, Azure CLIveya Active Directory tümleşik kimlik doğrulaması için kullanıcı hesabınızı kullanarak kodunuzu geliştirme makinenizde yerel olarak sınamanızı sağlar.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. Bu kitaplıkla ilgili yerel geliştirme seçenekleri hakkında daha fazla bilgi için Microsoft. Azure. Services. AppAuthentication başvurusubakın.For more on local development options with this library, see the Microsoft.Azure.Services.AppAuthentication reference. Bu bölümde, kodunuzda kitaplığı kullanmaya nasıl başlacağınız gösterilmektedir.This section shows you how to get started with the library in your code.

  1. Uygulamanıza Microsoft. Azure. Services. AppAuthentication ve diğer gerekli NuGet paketlerine başvurular ekleyin.Add references to the Microsoft.Azure.Services.AppAuthentication and any other necessary NuGet packages to your application. Aşağıdaki örnek Microsoft. Azure. Keykasasınıde kullanır.The below example also uses Microsoft.Azure.KeyVault.

  2. Aşağıdaki kodu uygulamanıza ekleyerek doğru kaynağı hedefleyin.Add the following code to your application, modifying to target the correct resource. Bu örnekte Azure Key Vault çalışmak için iki yol gösterilmektedir: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));

Microsoft. Azure. Services. AppAuthentication ve sunduğu işlemler hakkında daha fazla bilgi edinmek için, MSI .net örneği Ile Microsoft. Azure. Services. appauthentication başvurusu ve App Service ve keykasası ' na bakın.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.

Java için Azure SDK 'sını kullanmaUsing the Azure SDK for Java

Java uygulamaları ve işlevleri için, yönetilen bir kimlikle çalışmanın en kolay yolu, Java Için Azure SDK'ıdır.For Java applications and functions, the simplest way to work with a managed identity is through the Azure SDK for Java. Bu bölümde, kodunuzda kitaplığı kullanmaya nasıl başlacağınız gösterilmektedir.This section shows you how to get started with the library in your code.

  1. Azure SDK kitaplığınabir başvuru ekleyin.Add a reference to the Azure SDK library. Maven projeleri için, bu kod parçacığını dependencies projenin Pod dosyasının bölümüne ekleyebilirsiniz: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>
  1. Kimlik doğrulaması için nesnesini kullanın. AppServiceMSICredentialsUse the AppServiceMSICredentials object for authentication. Bu örnek, bu mekanizmanın Azure Key Vault çalışmak için nasıl kullanılabileceğini gösterir: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);

REST protokolünü kullanmaUsing the REST protocol

Yönetilen kimliğe sahip bir uygulama tanımlı iki ortam değişkenine sahiptir:An app with a managed identity has two environment variables defined:

  • MSI_ENDPOINT-yerel belirteç hizmetinin URL 'SI.MSI_ENDPOINT - the URL to the local token service.
  • MSI_SECRET-sunucu tarafı istek sahteciliğini önleme (ssrf) saldırılarını azaltmaya yardımcı olmak için kullanılan bir üst bilgi.MSI_SECRET - a header used to help mitigate server-side request forgery (SSRF) attacks. Değer, platform tarafından döndürülür.The value is rotated by the platform.

MSI_ENDPOINT , uygulamanızın belirteç isteyebileceği yerel bir URL 'dir.The MSI_ENDPOINT is a local URL from which your app can request tokens. Bir kaynağın belirtecini almak için, bu uç noktaya yönelik bir HTTP GET isteği oluşturun ve aşağıdaki parametreleri de dahil edin:To get a token for a resource, make an HTTP GET request to this endpoint, including the following parameters:

Parametre adıParameter name İçindeIn AçıklamaDescription
resourceresource SorguQuery Belirtecin alınması gereken kaynağın AAD Kaynak URI 'SI.The AAD resource URI of the resource for which a token should be obtained. Bu, Azure AD kimlik doğrulamasını veya DIĞER Kaynak URI 'Yi destekleyen Azure hizmetlerinden biridir.This could be one of the Azure services that support Azure AD authentication or any other resource URI.
api-versionapi-version SorguQuery Kullanılacak belirteç API 'sinin sürümü.The version of the token API to be used. "2017-09-01" Şu anda desteklenen tek sürümdür."2017-09-01" is currently the only version supported.
secretsecret ÜstbilgiHeader MSI_SECRET ortam değişkeninin değeri.The value of the MSI_SECRET environment variable. Bu üst bilgi, sunucu tarafı istek sahteciliğini önleme (ssrf) saldırılarını azaltmaya yardımcı olmak için kullanılır.This header is used to help mitigate server-side request forgery (SSRF) attacks.
ClientIDclientid SorguQuery (Kullanıcı atanmadığı için isteğe bağlı) Kullanılacak kullanıcı tarafından atanan kimliğin KIMLIĞI.(Optional unless for user-assigned) The ID of the user-assigned identity to be used. Atlanırsa, sistem tarafından atanan kimlik kullanılır.If omitted, the system-assigned identity is used.

Önemli

Kullanıcı tarafından atanan kimlikler için belirteçleri almaya çalışıyorsanız, clientid özelliği dahil etmeniz gerekir.If you are attempting to obtain tokens for user-assigned identities, you must include the clientid property. Aksi takdirde, belirteç hizmeti sistem tarafından atanan bir kimlik için belirteç edinmeye çalışır, bu da mevcut olabilir.Otherwise the token service will attempt to obtain a token for a system-assigned identity, which may or may not exist.

Başarılı bir 200 Tamam yanıtı, aşağıdaki özelliklere sahip bir JSON gövdesi içerir:A successful 200 OK response includes a JSON body with the following properties:

Özellik adıProperty name AçıklamaDescription
access_tokenaccess_token İstenen erişim belirteci.The requested access token. Çağıran Web hizmeti, alıcı Web hizmetinde kimlik doğrulaması yapmak için bu belirteci kullanabilir.The calling web service can use this token to authenticate to the receiving web service.
expires_onexpires_on Erişim belirtecinin süre sonu.The time when the access token expires. Tarih, 1970-01-01T0:0: 0Z UTC 'den sona erme zamanına kadar saniye sayısı olarak gösterilir.The date is represented as the number of seconds from 1970-01-01T0:0:0Z UTC until the expiration time. Bu değer, önbelleğe alınmış belirteçlerin ömrünü belirlemede kullanılır.This value is used to determine the lifetime of cached tokens.
resourceresource Alıcı Web hizmetinin uygulama KIMLIĞI URI 'SI.The App ID URI of the receiving web service.
token_typetoken_type Belirteç türü değerini gösterir.Indicates the token type value. Azure AD 'nin desteklediği tek tür taşıyıcı.The only type that Azure AD supports is Bearer. Taşıyıcı belirteçleri hakkında daha fazla bilgi için bkz . OAuth 2,0 yetkilendirme çerçevesi: Taşıyıcı belirteç kullanımı (RFC 6750).For more information about bearer tokens, see The OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750).

Bu yanıt, AAD hizmetten hizmete erişim belirteci isteğine yönelik yanıtile aynıdır.This response is the same as the response for the AAD service-to-service access token request.

Not

Ortam değişkenleri, işlem ilk kez başladığında ayarlanır, bu nedenle uygulamanız için yönetilen bir kimlik etkinleştirildikten sonra, uygulamanızı yeniden başlatmanız veya kodunuzun kullanılabilmesi için önce MSI_ENDPOINT ve MSI_SECRET kodunu yeniden dağıtmanız gerekebilir.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.

REST protokol örnekleriREST protocol examples

Örnek bir istek aşağıdakine benzeyebilir: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

Bir örnek yanıt aşağıdaki gibi görünebilir: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"
}

Kod örnekleriCode examples

Bu isteği yapmak için C#:To make this request in C#:

public static async Task<HttpResponseMessage> GetToken(string resource, string apiversion)  {
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("Secret", Environment.GetEnvironmentVariable("MSI_SECRET"));
    return await client.GetAsync(String.Format("{0}/?resource={1}&api-version={2}", Environment.GetEnvironmentVariable("MSI_ENDPOINT"), resource, apiversion));
}

İpucu

.NET dilleri için, bu isteği kendiniz taslağı yapmak yerine Microsoft. Azure. Services. AppAuthentication ' yi de kullanabilirsiniz.For .NET languages, you can also use Microsoft.Azure.Services.AppAuthentication instead of crafting this request yourself.

Node. JS ' de:In Node.JS:

const rp = require('request-promise');
const getToken = function(resource, apiver, cb) {
    let options = {
        uri: `${process.env["MSI_ENDPOINT"]}/?resource=${resource}&api-version=${apiver}`,
        headers: {
            'Secret': process.env["MSI_SECRET"]
        }
    };
    rp(options)
        .then(cb);
}

Python 'da:In Python:

import os
import requests

msi_endpoint = os.environ["MSI_ENDPOINT"]
msi_secret = os.environ["MSI_SECRET"]

def get_bearer_token(resource_uri, token_api_version):
    token_auth_uri = f"{msi_endpoint}?resource={resource_uri}&api-version={token_api_version}"
    head_msi = {'Secret':msi_secret}

    resp = requests.get(token_auth_uri, headers=head_msi)
    access_token = resp.json()['access_token']

    return access_token

PowerShell 'de:In PowerShell:

$apiVersion = "2017-09-01"
$resourceURI = "https://<AAD-resource-URI-for-resource-to-obtain-token>"
$tokenAuthURI = $env:MSI_ENDPOINT + "?resource=$resourceURI&api-version=$apiVersion"
$tokenResponse = Invoke-RestMethod -Method Get -Headers @{"Secret"="$env:MSI_SECRET"} -Uri $tokenAuthURI
$accessToken = $tokenResponse.access_token

Kimlik kaldırmaRemoving an identity

Portal, PowerShell veya CLı kullanılarak oluşturulduğu gibi özellik devre dışı bırakılarak sistem tarafından atanan bir kimlik kaldırılabilir.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. Kullanıcı tarafından atanan kimlikler tek tek kaldırılabilir.User-assigned identities can be removed individually. Tüm kimlikleri kaldırmak için REST/ARM şablon protokolünde, bu, türü "none" olarak ayarlayarak yapılır:To remove all identities, in the REST/ARM template protocol, this is done by setting the type to "None":

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

Sistem tarafından atanan bir kimliğin bu şekilde kaldırılması, AAD 'den de silinecek.Removing a system-assigned identity in this way will also delete it from AAD. Uygulama kaynağı silindiğinde, sistem tarafından atanan kimlikler de AAD 'den otomatik olarak kaldırılır.System-assigned identities are also automatically removed from AAD when the app resource is deleted.

Not

Ayrıca, yalnızca yerel belirteç hizmetini devre dışı bırakan WEBSITE_DISABLE_MSI, ayarlanabilir bir uygulama ayarı vardır.There is also an application setting that can be set, WEBSITE_DISABLE_MSI, which just disables the local token service. Ancak, kimliği yerinde bırakır ve araç, yönetilen kimliği "açık" veya "etkin" olarak göstermeye devam eder.However, it leaves the identity in place, and tooling will still show the managed identity as "on" or "enabled." Sonuç olarak, bu ayarın kullanılması önerilmez.As a result, use of this setting is not recommended.

Sonraki adımlarNext steps