繁体   English   中英

如何从 Azule AD MSAL accessToken 中检索用户角色?

[英]How to retrieve user roles from Azule AD MSAL accessToken?

我在 Azure 门户中创建了两个应用程序:一个是客户端应用程序,另一个是 web api。 我在 SPA 中获取 accessToken,然后使用此令牌向 web api 发出请求。 我为 web api 应用程序创建了角色,然后将其中一个角色分配给了我自己。

在 web api 内部,我可以使用装饰器[Authorize(Roles = "Reader, Editor, Admin")]验证每个端点的用户角色,但我还需要在我的客户端应用程序中访问这些角色。 我使用 jwt.ms 检查了这个 accessToken,解析后它有"roles": ["Admin"] 但是如何使用 JS 在客户端应用程序中获得这些角色?

如果您只想从 accessToken 负载中提取 Claims,请尝试以下代码:

 <html> <body> <div id="payload"></div> </body> <script src="https://cdn.jsdelivr.net/npm/js-base64@3.2.4/base64.min.js" ></script> <script> var token= "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IkRJakFBSUpjNmZnMlkzd0dObkpRSEpXWjhXX1FGOG5Zd2lfVTFfOVhMejgifQ..Fa5EX4b3Px5Xan_qs1a8I6DC8lLxu78AhyQu9-yqE68TCSrNt7QrAWbUPvFPC8TFErDb84FUPDvtLkVS7Q4mEM9dbAGRtxXoSkZa85TPLj6PxYmE61pONwwf971UZiFjLKjkhqVsbpC1Zbgvx5Z_vfFBlrlbxohzZHQuvBI6rqhLeZebvr9bitsIHgFvHJIh-6QgstII8ExQbXqLHzOB0E9e1nT4O7SaW4hnxEr-nKsnpsEbYZ-6LsIcR4svVyEsTp9_YoslU2hAHN0tLuJL-AR74wqUFjO79pUa3fCjiur207cEcvkthbahzeqVY-gqJGIGndZmxo3a3Rf0QEbWlg" var token_parts = token.split(".") var token_payload = JSON.parse(Base64.decode(token_parts[1])); document.getElementById("payload").innerHTML = Base64.decode(token_parts[1]) + "</br> </br> name claim:" + token_payload.name; </script> </html>

基本上,令牌由 3 部分组成,以“。”分隔。 ,并且有效载荷存储在第二部分中,您只需对其进行 Base64 解码即可获取其内容

atob()已弃用,您必须使用window.atob()或者您可以使用Buffer工具进行后端渲染

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM