我已经看到,在使用ADAL.js时,由于某些网址限制,您无法获得群组成员资格声明。
https://github.com/AzureAD/azure-activedirectory-library-for-js/issues/239
我正在使用来自前端的oauth-bearer身份验证,即前端通过AD登录页面触发登录。 然后,客户端将访问令牌传递给后端。
我想做什么:
我想根据组成员身份过滤后端端点中的某些数据。 例如如果您是团体成员" London"在AD中,您应该只在我们的数据库查询中看到与伦敦相关的内容。
超级简单使用例如Okta或Auth0,与Azure AD无关。
我还希望在前端完成同样的事情,即根据组成员身份显示和隐藏菜单项。 (所有访问权限仍在后端检查)
文档稀疏,不太有帮助。 "您应该使用Graph API"。
如何?,如何使用我从前端获得的令牌与图API进行对话?
这是我的Node + Express端点的设置:
app.use(
"/contacts",
passport.authenticate("oauth-bearer", { session: true }),
contacts
);
我应该在何时,何地以及何时调用图表API?
我们的系统非常小,所以我不介意使用会话状态。 用户登录时可以获取此信息吗? 该流程应该如何?客户端登录,登录后,调用后端并请求组?
答案 0 :(得分:2)
在用户登录后从Azure AD获取访问令牌时,您可以通过使用访问令牌向https://graph.microsoft.com/v1.0/me/memberOf
发送GET请求来查找用户的组成员身份,如下所示:
function getGroupsOfUser(accessToken, callback) {
request
.get('https://graph.microsoft.com/v1.0/me/memberOf')
.set('Authorization', 'Bearer ' + accessToken)
.end((err, res) => {
callback(err, res);
});
}
此示例假定您使用的是NPM包superagent。
here列出了调用此API所需的权限。