1

我使用 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)

这是使用访问密钥的正确方法,还是我访问错误!?

PS 我知道密钥有问题,好像我使用了使用 Postman 生成的令牌来测试调用一样。代码的其余部分运行良好 - 所以 oauth 令牌要么错误,要么客户端未授权......无论如何要破译哪个?(据我所知,该应用已在 Azure 门户中获得授权)。

4

0 回答 0