1

我在连接到 IoTHub 的 Azure 中测试了 TSI 预览环境。我正在尝试使用 TSI 测试 API,但是,我似乎做错了什么。

以下是我所做的事情。

  1. 创建了服务主体
  2. 使用 TSI 实例授予它访问我的资源组的权限
  3. 使用 API https://login.microsoftonline.com/ {{tenantId}}/oauth2/token 登录并获取令牌。
  4. 在门户上,它不允许我为服务原则创建数据访问策略,但 AZ CLI 可以,所以我创建了一个。
  5. 下面给出了我的邮递员屏幕截图,我使用 dataaccesFQDN 作为前缀,并且我也验证了环境 ID。
    1. 但是,所有 API 调用返回,

{ "error": { "code": "ResourceNotFound", "message": "id 为 'a5442850-c542-4602-a289-5ec1e1064280' 的环境未找到。" } }

对出了什么问题有任何想法吗?

在此处输入图像描述

4

2 回答 2

3

要获取 TSI API 的令牌,您需要在 Azure 活动目录中注册一个应用程序,其命令如下:

az ad app create --display-name myAppName
// for more options like replyUrls or roles refer to https://docs.microsoft.com/en-us/cli/azure/ad/app?view=azure-cli-latest#az-ad-app-create

或者,如果您想使用门户进行操作,您可以在此处按照以下步骤 使用 Azure 门户注册应用程序

下一步是为已注册的应用程序创建密码凭据,在您的 power-shell 中使用此命令

$startDate = Get-Date
$endDate = $startDate.AddYears(3)
$aadAppsecret = New-AzureADApplicationPasswordCredential -ObjectId <ObjectId of your registered application> -CustomKeyIdentifier "myPassword" -StartDate $startDate -EndDate $endDate

如果您检查 $aadAppsecret 的值,您应该获得密码,然后您将在邮递员中使用该密码,因此您需要将其存储在某个地方以备后用。

如果您不确定如何获取 ObjectId,请使用以下命令:

az ad app list --display-name myAppName

下一步是让应用程序访问您在第 2 点中完成的 TSI 环境

最后在你的邮递员做一个 POST 请求

https://login.microsoftonline.com/<Tenant Id>/oauth2/token

请求正文应包含以下内容:

grant_type : client_credentials
client_id : <your registered appId>
client_secret : <the password you generated earlier>
resource: https://api.timeseries.azure.com/

邮递员请求的屏幕截图

于 2020-07-17T11:59:32.120 回答
0

尝试使用https://login.microsoftonline.com/{tenantId}

删除 /oauth2/token

于 2020-07-08T20:31:38.453 回答