我使用adal4j授权clientId / secret组合来访问共享日历。
下面是我用来获取访问令牌的代码。
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(m_authorityUrl, false, service);
ClientCredential creds = new ClientCredential(m_clientId, m_clientSecret);
Future<AuthenticationResult> future = context.acquireToken(Url, creds, null);
result = future.get();
}
在我的情况下,我使用https://login.windows.net/common/oauth2/token作为m_authorityUrl,即客户端ID的注册应用程序的applicationId,秘密是在Azure门户中生成的秘密。
但是,当使用返回的密钥(长度为1082个字符!)时,我收到一个Http 401代码(即未授权)。我使用result.getAccessKey()函数获取密钥,然后将其添加为标题...
.addHeader("authorization", "Bearer " + m_accessKey)
这是使用访问密钥的正确方法,还是我访问错误了??
P.S。我知道密钥有问题,好像我使用Postman生成的令牌来测试呼叫。其余的代码工作得很好 - 所以oauth令牌是错误的,或者客户端没有被授权......无论如何要破译哪一个? (据我所知,该应用程序已在Azure门户中获得授权)。