【发布时间】:2018-10-05 02:05:54
【问题描述】:
我一直在使用两个示例项目来试验用于 Java 的 Azure Active Directory 访问:
1) https://github.com/AzureAD/azure-activedirectory-library-for-java 使用 OAuth 令牌构建独立战争以确保安全,并且
2) https://github.com/Microsoft/azure-spring-boot/tree/master/azure-spring-boot-samples/azure-active-directory-spring-boot-backend-sample 用于 spring-boot 嵌入式容器
我在 API 的使用方式上遇到了很大的不同,我无法理解。
在这两种情况下,我都通过使用我的 Azure 凭据登录来获得 AD 的 OAuth 令牌。 在 Http 响应中,我得到了以下形式的授权代码:
AQABAAIAAAD.....
然后使用以下 URL 作为 authContext: https://login.microsoftonline.com/{tenantId}
我通过以下调用获得了 AuthenticationResult:
Future<AuthenticationResult> future = authContext.acquireTokenByAuthorizationCode(authorizationCode, redirectUri, credential, null);
在Adal4j项目(一)中,AuthenticationResult的AccessToken是这样的:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6I...
我可以在 HTTP 调用中将其用作承载令牌,以通过 https://graph.windows.net/myorganization/me/thumbnailPhoto?api-version=1.6 检索用户的个人资料图片
而在 SpringBoot AD 示例中,从完全相同的调用返回的 AccessToken 的形式为:
AQABAAAAAADXzZ3ifr-GRbDT....
如果我以完全相同的方式使用它来尝试检索用户的个人资料图片,我会收到 401 Unauthorized 响应
这些AccessToken的形式和用途不同的原因是什么?
【问题讨论】:
标签: java azure spring-boot active-directory azure-active-directory