java - 来自后端 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 的无效凭据。
解决方案
如您所说,您要求GET /groups/{id}/calendar
获取组日历。
您可以使用代表 flow的访问令牌调用 Graph API ,请参见此处。
有一个使用 On-Behalf-Of 流的示例:https ://github.com/Azure-Samples/ms-identity-java-webapi
注意:确保添加了以下委派权限。
推荐阅读
- javascript - 如何在 chrome 扩展中添加“读取和更改您访问的网站上的所有数据”权限?
- mysql - 如何获取 MySQL 中的最新值?
- ios - 在隐式展开 Optional 时意外发现 nil
- logging - docker-compose down 超时
- c++ - VSCode + cmake + windows 10 - > cmake不在路径中
- php - Wordpress - 找不到 wp-admin
- neo4j - 如何限制 Neo4j 中两个节点之间只有一种关系?
- python - Plotly:如何以十六进制显示轴刻度?
- elasticsearch - elasticsearch摄取管道重命名动态字段
- android - 在 recyclerview 中显示来自适配器的特定注释