使用客户端密钥 Azure 请求访问令牌

Request an Access Token Using Client Secret Azure

我有 2 个 API:A 和 B。两者都在 Azure AD 中注册为 API。在天蓝色中,我生成了 B 的 KEY。

现在我需要生成一个访问令牌,所以我正在使用 ADAL 库 Java。我正在尝试使用此方法:

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

我有 ClientCredital 信息,但没有 userAsstion,而且我不知道如何生成它。有人可以帮忙吗?

这是我的电话:

Future<AuthenticationResult> future = context.acquireToken("http://localhost:8081",SHOULD_BE_ASSERTION,
                    new ClientCredential(CLIENT_ID,SECRET),null);

这实际上取决于您要实现的 OAuth 流程到底是什么。

你的情况最简单,从你的问题的上下文来看是 Client Credentials flow (described here) without user interaction. For that flow, you need one particular overload of the AcquireToken method, namley:

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

在该重载中,您仅提供由 client_id 和 client_secret 组成的 ClientCredentials

不同的 OAuth 流程需要 UserAssertion - on-behalf-of(描述为 here)。这只有在您拥有最终用户上下文时才有可能。这将是 Web 的访问令牌 Api A.

请花点时间阅读文档并了解不同的流程。然后你也会了解库和SDK。