【问题标题】:How do I use Microsoft ADAL for Java to do Service to Service Calls?如何使用 Microsoft ADAL for Java 进行服务到服务调用?
【发布时间】:2016-05-21 00:50:47
【问题描述】:

我想这次我会使用微软的ADAL 库来与 Office365 进行交互。

我有一个集成任务要执行,所以不需要用户交互,这就是我发现的地方:

https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx

我能够使用客户端凭据获取令牌。但根据文章,我应该“只”需要一个 client_id 和 client_secret。

我在 AuthenticationContext 类上找不到建议支持此功能的方法。

我希望我忽略了一些东西。

我知道我可以自己执行 HTTP 请求,但这违背了使用 ADAL 软件的目的。

【问题讨论】:

    标签: java service adal azure-ad-graph-api


    【解决方案1】:

    您要查找的方法签名是:

    public Future<AuthenticationResult> acquireToken(
        final String resource,
        final ClientCredential credential,
        final AuthenticationCallback callback)
    

    ClientCredential 是使用应用程序的client_id 和client_secret 创建的。这是我从the sample included with ADAL4J借来的一个例子:

    Future<AuthenticationResult> future = context.acquireToken(
        "https://graph.windows.net",
        new ClientCredential(clientId, clientSecret),
        null);
    result = future.get();
    

    (在上面,context 是AuthenticationContext 的实例。)

    【讨论】:

    • 我现在有一个带有这些凭据的访问令牌,但是......当在线访问(在我的情况下)crm 时,我得到 http 401(未经授权)。在 Azure AD 权限中,只有一个选项可以指定,即:以组织用户身份访问 CRM Online。我应该开始一个新的话题来解决问题还是你可以@PhilippeSignoret 帮助我?
    • 您应该开始一个新问题,但答案是:CRM Online 仅支持应用程序+用户令牌(委托权限),不支持应用程序。如果您希望您的进程在用户不存在的情况下模拟用户,则可以通过刷新令牌来获取新的访问令牌,但这是一个脆弱(且有风险)的设置。
    猜你喜欢
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2016-01-21
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多