【问题标题】:Azure AD Graph API access without using client id and secret key不使用客户端 ID 和密钥的 Azure AD Graph API 访问
【发布时间】:2016-08-20 21:40:23
【问题描述】:

我有一个后端服务需要读取和写入 Azure AD。通过使用租户信息、客户端 ID 和密钥(这些值来自 Authentication Scenarios for Azure AD | Basics of Registering an Application in Azure AD)进行身份验证,我能够使用图形 API 进行读写。

使用租户信息、客户端 ID 和密钥进行身份验证意味着最终用户需要通过手动指定这些值来注册其租户,我试图避免用户需要指定这些值的手动注册步骤。

我还查看了多租户应用程序管理员/用户同意及其相关示例Integrating applications with azure active directory。但是,管理员同意的问题是它使目录中的所有用户都可以访问该目录。

是否有任何其他方式可以提供某种注册链接,让全局管理员用户进行身份验证并同意许可,此时可以保留某种访问或刷新令牌以供后端使用服务?

【问题讨论】:

    标签: azure authentication active-directory azure-ad-graph-api


    【解决方案1】:

    我有相反的问题(请参阅How to use Azure AD Graph API access for service principals?),但可以回答您的问题。守护程序应用程序可以作为单租户或多租户运行,并使用用户/密码身份验证,因此可以限制为该用户的权限/角色。我已经通过使用相同的应用程序同时使用客户端 ID/秘密和用户/密码对此进行了测试 - 您只需为用户/密码情况添加所需的权限到应用程序(这似乎不适用于 SP )。

    就我而言,我使用的是 adal4j,但我相信您可以根据需要对其进行调整,例如:

    final ExecutorService service = Executors.newFixedThreadPool(1);
    final AuthenticationContext context = new AuthenticationContext(authority, true, service);
    final Future<AuthenticationResult> future = context.acquireToken("https://graph.windows.net", clientID, userName, decryptedPassword, null);
    final AuthenticationResult result = future.get();
    
    ...
    

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 2017-01-10
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多