当前位置: 首页 > 知识库问答 >
问题:

Azure托管标识错误-找不到访问令牌的标识

黄飞翮
2023-03-14

我正在尝试以编程方式获取Azure数据工厂的托管标识对象(使用Python)。

为此,我遵循以下步骤:

  1. 在Azure Active Directory中注册应用程序以获取客户端ID、添加客户端机密、租户ID、范围
head = {"Authorization": "Bearer {}".format(request_token)} 
#request_token is the access token from #2   
requests.get('https://manahtml" target="_blank">gement.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}?api-version=2018-06-01', headers = head)

如链接中提供:https://docs.microsoft.com/en-us/azure/data-factory/data-factory-service-identity

完成这些步骤后,#5的响应为error=“invalid\u token”,error\u description=“找不到访问令牌的标识”

应用注册没有用于检查托管标识的标识部分。

我是不是错过了一步?

请查找下面的代码。谢谢你的时间!

import sys  
import json
import logging

import requests
import msal



input_client_id = <client_id>
input_authority = "https://login.microsoftonline.com/<tenant_id>"
input_secret = <client_Secret>
input_scope = ["https://graph.microsoft.com/.default"]
input_endpoint = "https://graph.microsoft.com/v1.0/applications"

app = msal.ConfidentialClientApplication(
    input_client_id, authority=input_authority,
    client_credential=input_secret,
    # token_cache=...  # Default cache is in memory only.
                       # You can learn how to use SerializableTokenCache from
                       # https://msal-python.rtfd.io/en/latest/#msal.SerializableTokenCache
    )


result = app.acquire_token_for_client(scopes=input_scope)

print('Access Token', result['access_token'])
request_token = result['access_token']
head = {"Authorization": "Bearer {}".format(request_token)}
response = requests.get('{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}?api-version=2018-06-01', headers=head)

部分错误响应:

{'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Content-Type': 'application/json; charset=utf-8', 'Expires': '-1', 'WWW-Authenticate': 'Bearer authorization_uri="https://login.windows.net/<tenant_id>", error="invalid_token", error_description="Could not find identity for access token."'

共有1个答案

厉成仁
2023-03-14

尝试更换范围<代码>https://graph.microsoft.com/.default带https://management.azure.com/.default

当您请求azure管理Rest API时,您需要此范围。

 类似资料:
  • 有没有办法将Azure托管标识与LinuxVM一起使用来访问AzureSQL数据库?我只能找到这个文档https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-sql它专门针对Windows VM。Linux机器是否有文档

  • 我正在尝试使用托管标识从Azure Windows VM访问Azure存储资源。 我已经按照这里的指示做了https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-vm-windows-access-storage但本教程中的访问部分是使用完成的。NET,这

  • 我们计划在我们的单个Azure kubernetes集群上部署多个应用程序,每个应用程序都将拥有自己的一组Azure资源-例如:Key vault、Storage。 我计划为每个应用程序提供个人托管身份,并提供对相关资源的访问。 我知道AZURE AAD POD identify是配置POD以使用托管标识访问AZURE资源的方法。 但是,如何将多个托管标识添加到Azure kubernetes集群

  • 我使用postMan,输入请求地址http://localhost:8011/umrah/oauth/token?client_id=client_2&username=1234567&password=123456&grant_type=password&client_secret=123456,点击send按钮,出现错误,在内存中工作正常,当我想使用Jdbc令牌存储时,想法控制台错误:找不到令

  • 我试图使用托管标识从API管理实例调用Azure函数。我已为我的APIM实例设置了系统管理的标识。我已将参与者角色授予Azure Function应用程序上的此身份。我还将应用程序服务身份验证更改为AD。 现在我尝试从API调用该函数。 我有两个问题: 第一个:当我使用身份验证管理身份策略来获取令牌时,我得到了一个错误,当我使用受众https://myfunctionapp.azurewebsit

  • 是否可以通过托管标识从托管在不同订阅上的Azure AppService访问一个订阅上的Azure SQL数据库? 我遵循了以下步骤,其中没有关于不同订阅的示例。https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-connect-msi#grant-对托管标识的权限 其他链接使用Azure托管标识访