Azure AD – 检查安全组成员资格 – (Node.js,护照,Azure Web App)
我们正试图build立一个authentication/授权过程,具有以下要求:
- 身份validation:由Azure AD完成。
- 授权:只有特定安全组的成员应该被允许访问该应用程序。
虽然validation部分似乎没有问题,我们被困在授权部分。 我们正在使用快递和护照。
Azure AD一些令牌请求req.headers
,例如
- X-MS-令牌AAD-访问令牌
- X-MS-令牌AAD刷新令牌
- X-MS-令牌AAD-ID令牌
目前,我们正在使用id-token和passport-azure-ad BearerStrategy来检查用户的安全组是否符合允许的安全组。
问题是:一旦id令牌过期,应用程序不会让我们访问应用程序。 假设在护照中设置{session: true}
可以解决这个问题,我们启用了会话,但没有运气。
做了一些更多的研究,我发现这篇文章: 如何在Web应用程序中从Azure AD刷新ID令牌? ,它表示只有访问令牌可以被刷新,但ID令牌不能也不应该。
检查x-ms-token-aad-access-token
和x-ms-token-aad-refresh-token
,我们发现它们没有JWT结构,例如
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1THdqcHdBSk9NOW4tQSJ9.eyJhdWQiOiJodHRwczovL.JZw8jC0gptZxVC-7l5sFkdnJgP3_tRjeQEPgUn28XctVe3QqmheLZw7QVZDPCyGycDWBaqy7FLpSekET_BftDkewRhyHk9FW_KeEz0ch2c3i08NGNDbr6XYGVayNuSesYk5Aw_p3ICRlUV1bqEwk-Jkzs9EEkQg4hbefqJS6yS1HoV_2EsEhpd_wCQpxK89WPs3hLYZETRJtG5kvCCEOvSHXmDE6eTHGTnEgsIk--UlPe275Dvou4gEAwLofhLDQbMSjnlV5VLsjimNBVcSRFShoxmQwBJR_b2011Y5IuD6St5zPnzruBbZYkGNurQK63TJPWmRd3mbJsGM0mf3CUQ
他们不包含任何点,因此没有通过智威汤逊validation。
导致以下问题:
- 根据指定的允许安全组检查用户安全组的正确方法是什么?
除了在ID令牌中检查组声明之外,还可以调用MicrosoftgraphicsAPI来获取用户是其直接成员的组:
POST https://graph.microsoft.com/beta/me/getMemberGroups Content-type: application/json Content-length: 33 { "securityEnabledOnly": true }
或者使用Auzre AD Graph api :
POST https://graph.windows.net/myorganization/{resource_collection}/{resource_id}/getMemberGroups?api-version Content-Type: application/json { "securityEnabledOnly": false }
如何将App Service Web,Mobile或API应用程序configuration为代表login用户调用Azure Active DirectorygraphicsAPI。 你可以参考下面的文档,其中显示了详细的步骤:
https://cgillum.tech/2016/03/25/app-service-auth-aad-graph-api/
authentication后,访问令牌可以直接从内置的请求头(x-ms-token-aad-access-token)获取,你可以通过http请求调用graphicsapi来获取组信息。
- Microsoft Bot框架错误 – InternalServerError {“消息”:“发生错误。”}
- 在Azure移动应用程序的Azure表脚本中插入不同的表
- 现在在Windows Azure上
- 如何从Visual Studio Team System部署纯粹的Angular应用程序到Azure网站
- 当Node应用程序返回一个4xx时,IIS返回500
- 无法JSONparsing从Node.js应用程序中从Azure服务总线收到的消息
- 使用Node.js Passport的Azure AD身份validation返回“此API版本不支持”
- 将节点上传的文件stream式传输到Azure blob存储
- API将不会使用MSAL通过SPA传递的令牌对AAD进行身份validation