0

为了自动维护 Azure 数字孪生实例,我们需要服务到服务 API 访问,以便我们可以使用 Azure 中间层选项作为守护程序应用程序(例如逻辑应用程序或函数)运行。

但是,在 Azure Active Directory 中注册应用程序时,Azure 数字孪生“预览”API(资源 id:0b07f429-9f4b-4714-9392-cc5e8e80c8b0)不支持应用程序权限(仅限委派权限)。但是,相关的 Microsoft Graph API(资源 id:00000003-0000-0000-c000-000000000000)支持这两种权限类型。

目前有什么方法可以在不需要登录 AAD 帐户的情况下对 Azure 数字孪生 API 的访问进行身份验证(即使用“client_credentials”授权类型)?

4

2 回答 2

0

要使用客户端凭据流,您需要应用程序权限。如果只是Delegated Permission在 API 中定义,您可以使用已登录的用户帐户访问 API,例如授权码流。

在您的情况下,选项是On-Behalf-Of flow

  1. 用户使用授权码流或其他登录流向中间层应用程序进行身份验证

  2. 在身份验证期间获取 OAuth 2.0 On-Behalf-Of 令牌

  3. 然后,获取的令牌用于使用 On-Behalf-Of 流向更下游的 API 进行身份验证或调用 API

有关更多详细信息,请查看此文档 -从中​​间层 Web API 调用数字孪生

于 2020-02-21T02:22:14.780 回答
0
  1. 首先,您需要将在 Azure AD 中注册的控制台应用程序的新角色 (RABC) 添加到 azure 数字孪生实例中。

  2. 为控制台应用程序创建客户端密码。

     private static DigitalTwinsClient GetDigitalTwinsClient(string tenantId, string clientId, string clientSecret, string adtEndpoint)
     {
         Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", clientSecret);
         Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", clientId);
         Environment.SetEnvironmentVariable("AZURE_TENANT_ID", tenantId);
    
         var tokenCredential = new DefaultAzureCredential();
    
         var client = new DigitalTwinsClient(
             new Uri(adtEndpoint),
             tokenCredential, new DigitalTwinsClientOptions
             { Transport = new HttpClientTransport(httpClient) });
    
         return client;
     }
    
于 2020-09-21T17:28:38.720 回答