我最近遇到了一个问题。
我的前端使用 Oauth2 在 Azure(组织)上对我的用户进行身份验证。这给了我包含 idToken 和 accessToken 的多个信息。
我的后端使用 AADResourceServerWebSecurityConfigurerAdapter 对用户进行身份验证,这要归功于前端的 Authorization Bearer 标头中的 idToken。
Unitil 在这里一切正常。我可以通过这个获取连接的用户:
public static String getConnectedUserEmail() {
return (String) ((AADOAuth2AuthenticatedPrincipal) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getAttributes().get("preferred_username");
}
我使用我的后端应用凭据代表 API 本身联系图形 API。
虽然,根据 Azure Ad 文档,我无法代表 API 查询组/日历,我必须代表用户执行此操作。 为了尊重 SOLID 原则,我想从后端发出请求,但代表用户。 我找不到任何相关信息。
所以这是我的最后一个问题:如何代表用户在我的后端发出图形 API 请求? 知道尝试使用用户的 tokenValue (idToken) 或 accessToken 值会返回来自 Microsoft 的无效凭据。
答案 0 :(得分:0)
如您所说,您请求 GET /groups/{id}/calendar
获取群组日历。
您可以使用代表流程使用访问令牌调用图谱 API,请参阅here。
有一个使用代表流的示例:https://github.com/Azure-Samples/ms-identity-java-webapi
注意:确保添加了以下委派权限。