Azure active directory 如何使用服务主体访问azure digital twin API?

Azure active directory 如何使用服务主体访问azure digital twin API?,azure-active-directory,azure-functions,azure-function-app,azure-digital-twins,Azure Active Directory,Azure Functions,Azure Function App,Azure Digital Twins,我的用例是每当我在Azure函数中从Cosmos DB获得触发器时,需要与Azure digital twin API进行交互,而无需任何人工交互。 从下面的链接中,我了解到我们可以使用服务原则来实现它。 但我不知道如何使用数字双API验证服务主体。 1) 需要什么类型的身份验证以及流程将如何进行? 2) 如果是Oauth2,访问digital twin的授权类型和范围是什么 提前谢谢 1) 需要什么类型的身份验证,以及流将如何进行 正如你提到的帖子,你应该使用。 主要流程如下所示: 2) 如

我的用例是每当我在Azure函数中从Cosmos DB获得触发器时,需要与Azure digital twin API进行交互,而无需任何人工交互。
从下面的链接中,我了解到我们可以使用服务原则来实现它。

但我不知道如何使用数字双API验证服务主体。
1) 需要什么类型的身份验证以及流程将如何进行?
2) 如果是Oauth2,访问digital twin的授权类型和范围是什么

提前谢谢

1) 需要什么类型的身份验证,以及流将如何进行

正如你提到的帖子,你应该使用。 主要流程如下所示:

2) 如果是Oauth2,访问的授权类型和范围是什么 数字孪生兄弟

您可以参考以下内容:

对于
范围
,它应该是您想要访问的数字孪生API。(如空间、设备、用户或传感器)。看

1) 需要什么类型的身份验证,以及流将如何进行

正如你提到的帖子,你应该使用。 主要流程如下所示:

2) 如果是Oauth2,访问的授权类型和范围是什么 数字孪生兄弟

您可以参考以下内容:

对于
范围
,它应该是您想要访问的数字孪生API。(如空间、设备、用户或传感器)。请参阅。

使用Digital Twins API时,有一种(几乎)未经记录的方式,而无需代表流。我将其用于自动化任务,以操作ADT的内容或为某些应用程序提供数据的只读视图。这一切都从角色分配开始。请参阅YAML中的这段代码,我在第一次创建ADT实例时使用它来配置ADT实例

- 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。当您转到应用程序注册的Overview选项卡时,您可以复制应用程序ID并在云控制台中执行以下命令:

az ad sp show --id {the id you copied}
这将显示有关您的服务主体的许多详细信息,包括被拒绝的服务主体。把这个也抄下来。 要检索访问令牌,您需要4件事:

  • 授权:{您的租户id}
  • ClientId:应用程序注册的应用程序id
  • ClientSecret:您创建的客户端密码
  • DigitalTwinsAPI:这始终是0b07f429-9f4b-4714-9392-cc5e8e80c8b0
  • 正在.NET Core中检索访问令牌

    var authContext = new AuthenticationContext({Authority});
    var clientCredential = new ClientCredential({ClientId}, {ClientSecret});
    var result = await authContext.AcquireTokenAsync({DigitalTwinsAppId}, clientCredential);
    return result.AccessToken;
    
    将它添加到您的标题中(下面的HttpClient示例),您就可以开始了

    httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
    
    使用Digital Twins API时,有一种(几乎)没有文档记录的方式,而没有代表流。我将其用于自动化任务,以操作ADT的内容或为某些应用程序提供数据的只读视图。这一切都从角色分配开始。请参阅YAML中的这段代码,我在第一次创建ADT实例时使用它来配置ADT实例

    - 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。当您转到应用程序注册的Overview选项卡时,您可以复制应用程序ID并在云控制台中执行以下命令:

    az ad sp show --id {the id you copied}
    
    这将显示有关您的服务主体的许多详细信息,包括被拒绝的服务主体。把这个也抄下来。 要检索访问令牌,您需要4件事:

  • 授权:{您的租户id}
  • ClientId:应用程序注册的应用程序id
  • ClientSecret:您创建的客户端密码
  • DigitalTwinsAPI:这始终是0b07f429-9f4b-4714-9392-cc5e8e80c8b0
  • 正在.NET Core中检索访问令牌

    var authContext = new AuthenticationContext({Authority});
    var clientCredential = new ClientCredential({ClientId}, {ClientSecret});
    var result = await authContext.AcquireTokenAsync({DigitalTwinsAppId}, clientCredential);
    return result.AccessToken;
    
    将它添加到您的标题中(下面的HttpClient示例),您就可以开始了

    httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
    

    嗨,你有机会了解我的答案吗?你的问题被重新讨论了吗?嗨,你有机会了解我的答案吗?你的问题被重新讨论了吗?