当前位置: 首页 > 知识库问答 >
问题:

ASP的隐式授权。net core 2 web API和SPA

杨俊茂
2023-03-14

我有一个Angular SPA前端,它由位于不同Azure Web应用程序中的ASP. net core 2 Web API备份。此Web API由Azure AD锁定,Angular和后端API的AD租户相同。我希望Azure AD租户中的所有用户都能够访问前端和后端API。但是,很少有用户需要具有特定权限才能进行某些操作(创建/更新)。

我可以在Azure AD中创建应用注册,并对SPA和后端API使用相同的应用注册。然后在SPA中使用ADAL. js获取访问令牌和id令牌,并将其传递给后端Web API。我不确定的是,用户的角色是否会在Web API的声明中飞行?我计划将用户添加到特定的应用程序角色。

共有1个答案

高修筠
2023-03-14

如果用户在其登录的应用程序上具有角色,则角色将位于id令牌中。由于SPA注册为本机应用程序,您基本上无法拥有角色,因为用户无论如何都可以完全控制前端。如果用户在该API上具有角色,则角色将位于访问令牌中。

您有两个选择:

  1. 像你说的那样使用相同的应用程序注册。在该应用程序上分配用户角色,这些角色将位于Id令牌中。然后使用Id标记调用API,它也可以看到角色
  2. 在API上分配用户角色,并通过在前端解码访问令牌来检查其角色
 类似资料:
  • 隐式许可是为用如JavaScript等脚本语言在浏览器中实现的客户端而优化的一种简化的授权码流程。在隐式许可流程中,不再给客户端颁发授权码,取而代之的是客户端直接被颁发一个访问令牌(作为资源所有者的授权)。这种许可类型是隐式的,因为没有中间凭据(如授权码)被颁发(之后用于获取访问令牌)。 当在隐式许可流程中颁发访问令牌时,发授权服务器不对客户端进行身份验证。在某些情况下,客户端身份可以通过用于向客

  • 我想更好地理解隐式授权流和授权代码授权流之间的区别,因为我不确定我目前的理解是否正确。 隐式授权流主要由前端应用程序用于验证用户身份吗? 隐式授权流是否只需要一个client_id、用户名和密码来进行身份验证,换句话说,永远不会发送client_secret? 授权码只是一个短期令牌吗? 将授权码交换为访问令牌后,客户端可以访问用户帐户多长时间?具体地说,如果客户端是一个长时间运行的脚本,那么用户

  • 我们正在开发一个Salesforce组件,可用于显示与客户帐户记录相关的所有信封和状态。信封通过自定义字段生成并通过自定义第三方应用程序链接到帐户记录。我们希望组件不要求登录用户登录DocuSign,只显示信封。因此,我们计划使用一个服务用户来标注文档签名来检索信封。 我的问题是,隐式格兰特是解决这个问题的方法吗?还是JWT格兰特?什么URI参数值(比如范围)是获取令牌的关键?

  • 我对以下涉及oauth2的流程有一些问题: webapp1.xyz.com是具有授权代码授予类型的注册客户端,以下是当前流程: 用户登录并使用授权码重定向到webapp1.xyz.com webapp1.xyz.com交换访问令牌的授权代码并将其存储到会话 webapp1.xyz.com服务器端需要通过传递访问令牌调用webapp2.xyz.com api webapp1.xyz.com具有SPA

  • 我想要一些关于如何在隐式授予流中使用ID令牌和访问令牌的澄清。我有一个使用msal.js for Angular包的Angular SPA和一个Web API。API不调用任何外部服务,如MSFT Graph。后端仅使用JWT中的角色声明来建立对API功能的RBAC授权。 这个文档写着:https://docs.microsoft.com/en-us/azure/active-directory/

  • 我已经使用IWebBrowser2控件实现了oAuth2隐式授权流,身份验证对话框从openAM中出现,我已经输入了用户名和密码,它为我提供了访问令牌。但是我的应用程序如何知道哪个用户名是经过身份验证的,我还需要从我的数据库中验证这个用户名?