来自后端 Azure Ad 的用户图形请求

时间:2021-06-05 09:02:00

标签: java azure azure-active-directory microsoft-graph-api

我最近遇到了一个问题。

我的前端使用 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 的无效凭据。

1 个答案:

答案 0 :(得分:0)

如您所说,您请求 GET /groups/{id}/calendar 获取群组日历。

您可以使用代表流程使用访问令牌调用图谱 API,请参阅here

enter image description here

有一个使用代表流的示例:https://github.com/Azure-Samples/ms-identity-java-webapi

注意:确保添加了以下委派权限。

enter image description here