首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用服务主体访问蔚蓝数字双API?

如何使用服务主体访问蔚蓝数字双API?
EN

Stack Overflow用户
提问于 2020-04-23 04:07:10
回答 2查看 506关注 0票数 0

我的用例是,每当我在Azure函数中从Cosmos DB获得触发器时,都需要与Azure数字双API交互,而不需要任何人工交互。

通过下面的链接,我了解到我们可以使用服务主体来实现它。

是否可以为Daemon应用程序配置Azure数字双胞胎API访问权限?

但我不知道如何使用数字双API来验证服务主体。

1)需要何种类型的身份验证以及流程如何?

2)如果是Oauth2,那么访问数字双胞胎的授予类型和范围是什么?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-23 07:11:02

有一种(几乎)无文档的方式来使用数字双胞胎API,而不代表流。我将它用于自动任务,以操作ADT的内容或提供某些应用程序的数据只读视图。一切都是从角色分配开始的。看到YAML中的这个片段,当我第一次创建它时,我使用它来提供我的ADT实例。

代码语言:javascript
运行
复制
- roleId: 98e44ad7-28d4-4007-853b-b9968ad132d1 # Space Administrator
  objectId: abcd1234-5556-44a2-1234-402dbd999619 # Service Principal object ID
  objectIdType: ServicePrincipalId
  tenantId: 1234567-8901-2345-abcd-123456789 # Azure subscription tenant

ServicePrincipalId对象类型是在此页上描述的,但在任何示例中都没有提到。此代码段将空间管理员权限授予服务主体。然后,您可以使用客户端秘密检索将允许您访问ADT的访问令牌。在您的Azure Active Directory中为ADT注册应用程序时,请转到证书和机密,并为新的客户端保密。

下一步是检索服务主体的objectId,这是而不是应用程序注册的objectId。当您转到应用程序注册的概述选项卡时,您可以在云控制台中复制应用程序ID并执行以下命令:

代码语言:javascript
运行
复制
az ad sp show --id {the id you copied}

这将显示您的服务校长的许多细节,包括被反对的人。把这个也复制下来。快到了,要检索访问令牌,您需要4件事情:

  1. 权威:https://login.microsoftonline.com/{您的租户id}
  2. ClientId:应用程序注册的应用程序id。
  3. ClientSecret:您创建的客户端秘密。
  4. DigitalTwinsAppId:总是0b07f429-9f4b-4714-9392-cc5e8e80c8b0。

在.NET核中检索访问令牌

代码语言:javascript
运行
复制
var authContext = new AuthenticationContext({Authority});
var clientCredential = new ClientCredential({ClientId}, {ClientSecret});
var result = await authContext.AcquireTokenAsync({DigitalTwinsAppId}, clientCredential);
return result.AccessToken;

将其添加到您的标题中(下面的HttpClient示例),您就可以继续了!

代码语言:javascript
运行
复制
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
票数 2
EN

Stack Overflow用户

发布于 2020-04-23 05:10:10

1)需要何种类型的身份验证以及流程如何?

正如您所提到的,您应该使用OAuth 2.0代表流。主要流程在这里:从中间层web API调用数字双胞胎

2)如果是Oauth2,那么访问数字双胞胎的授予类型和范围是什么?

您可以参考这个示例

代码语言:javascript
运行
复制
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer

对于scope,它应该是您想要访问的数字双API。(例如,空间、设备、用户或传感器)。见API摘要

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61379208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档