首页 > 解决方案 > 来自后端 Azure Ad 的用户图形请求

问题描述

我最近遇到了一个问题。

我的前端使用 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 广告文档,我无法代表 API 查询组/日历,但我必须代表用户执行此操作。为了尊重 SOLID 原则,我想从后端发出请求,但代表用户。我找不到任何相关信息。

所以这是我的最后一个问题:如何代表用户在后端发出图形 API 请求?知道尝试使用用户的 tokenValue (idToken) 或 accessToken 值会返回来自 Microsoft 的无效凭据。

标签: javaazureazure-active-directorymicrosoft-graph-api

解决方案


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

您可以使用代表 flow的访问令牌调用 Graph API ,请参见此处

在此处输入图像描述

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

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

在此处输入图像描述


推荐阅读