我有2个API:A和B。两者都在Azure AD中注册为API。天蓝色,我为B生成了一个密钥。
现在我需要生成一个访问令牌,因此我正在使用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);
答案 0 :(得分:2)
这实际上取决于您要实现的OAuth流量。
从您的问题出发,最简单的方法是Future<AuthenticationResult> acquireToken(String resource, ClientCredential credential, AuthenticationCallback callback)
流(described here),而无需用户交互。对于该流程,您需要AcquireToken method
的一个特殊重载,即namley:
UserAssertion
在这种超载中,您仅提供由client_id和client_secret组成的ClientCredentials
。
on-behalf-of
是另一个OAuth流所必需的-"2008-12-30 00:00:00.0000000"
(描述为here)。只有当您具有最终用户上下文时,才有可能。这将是Web Api A的访问令牌。
请花一些时间阅读文档并了解不同的流程。然后,您还将了解这些库和SDK。