【问题标题】:Is it possible to configure Azure Digital Twins API access for a Daemon App?是否可以为守护程序应用配置 Azure 数字孪生 API 访问?
【发布时间】:2020-02-20 00:42:54
【问题描述】:

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

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

目前是否有任何方法无需登录 AAD 帐户(即使用“client_credentials”授权类型)即可对 Azure 数字孪生 API 的访问进行身份验证?

【问题讨论】:

    标签: azure-active-directory microsoft-identity-platform azure-digital-twins


    【解决方案1】:

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

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

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

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

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

    有关详细信息,请查看此文档 - Call Digital Twins from a middle-tier web API

    【讨论】:

    • 感谢您的回复,但这提供了一个已知的解决方法,而不是我的问题的答案。 Daemon 应用程序在触发器上无人看管地运行,并且与人类用户没有交互。因此,用户无法在执行时进行身份验证。
    • @ChrisLowndes 如果是这样,你不能调用 api。该 api 旨在仅公开委托权限,您必须使用用户进行身份验证。
    • 您实际上可以,我在我们的办公室运行了一个不需要人工登录的演示。我不久前创建了它,它围绕服务主体展开。如果你还需要这个,请告诉我。
    【解决方案2】:
    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-04-03
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      相关资源
      最近更新 更多