【发布时间】:2017-11-11 17:44:20
【问题描述】:
我们正在尝试设置具有以下要求的身份验证/授权过程:
- 身份验证:由 Azure AD 完成。
- 授权:应该只允许特定安全组的成员访问应用程序。
虽然身份验证部分似乎没有问题,但我们仍停留在授权部分。我们正在使用 Express 和 Passport。
Azure AD 一些令牌到req.headers,例如
- x-ms-token-aad-access-token
- x-ms-token-aad-refresh-token
- x-ms-token-aad-id-token
我们目前正在使用 id-token 和 passport-azure-ad BearerStrategy 来检查用户的安全组与允许的安全组。
问题是:一旦 id-token 过期,应用程序将不允许我们访问应用程序。假设在护照中设置{session: true} 可以解决这个问题,我们启用了会话,但没有运气。
做了更多的研究,我发现了这篇文章:How to refresh an ID Token from Azure AD in a Web App?,它指出只有访问令牌可以刷新,但 ID 令牌不能也不应该。
检查x-ms-token-aad-access-token和x-ms-token-aad-refresh-token,我们发现它们没有JWT结构,例如
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1THdqcHdBSk9NOW4tQSJ9.eyJhdWQiOiJodHRwczovL3NlcnZpY2UuY29udG9zby5jb20vIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvN2ZlODE0NDctZGE1Ny00Mzg1LWJlY2ItNmRlNTdmMjE0NzdlLyIsImlhdCI6MTM4ODQ0MDg2MywibmJmIjoxMzg4NDQwODYzLCJleHAiOjEzODg0NDQ3NjMsInZlciI6IjEuMCIsInRpZCI6IjdmZTgxNDQ3LWRhNTctNDM4NS1iZWNiLTZkZTU3ZjIxNDc3ZSIsIm9pZCI6IjY4Mzg5YWUyLTYyZmEtNGIxOC05MWZlLTUzZGQxMDlkNzRmNSIsInVwbiI6ImZyYW5rbUBjb250b3NvLmNvbSIsInVuaXF1ZV9uYW1lIjoiZnJhbmttQGNvbnRvc28uY29tIiwic3ViIjoiZGVOcUlqOUlPRTlQV0pXYkhzZnRYdDJFYWJQVmwwQ2o4UUFtZWZSTFY5OCIsImZhbWlseV9uYW1lIjoiTWlsbGVyIiwiZ2l2ZW5fbmFtZSI6IkZyYW5rIiwiYXBwaWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctODkwYS0yNzRhNzJhNzMwOWUiLCJhcHBpZGFjciI6IjAiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJhY3IiOiIxIn0.JZw8jC0gptZxVC-7l5sFkdnJgP3_tRjeQEPgUn28XctVe3QqmheLZw7QVZDPCyGycDWBaqy7FLpSekET_BftDkewRhyHk9FW_KeEz0ch2c3i08NGNDbr6XYGVayNuSesYk5Aw_p3ICRlUV1bqEwk-Jkzs9EEkQg4hbefqJS6yS1HoV_2EsEhpd_wCQpxK89WPs3hLYZETRJtG5kvCCEOvSHXmDE6eTHGTnEgsIk--UlPe275Dvou4gEAwLofhLDQbMSjnlV5VLsjimNBVcSRFShoxmQwBJR_b2011Y5IuD6St5zPnzruBbZYkGNurQK63TJPWmRd3mbJsGM0mf3CUQ
它们不包含任何点,因此未通过 JWT 验证。
导致以下问题:
- 根据指定的允许安全组检查用户的安全组的正确方法是什么?
【问题讨论】:
-
提示:你应该看看 Graph API
-
谢谢,我们看看!
标签: node.js azure express passport.js azure-active-directory