Asp.net core 使用ASP.net core 2 web API和SPA的隐式授权

Asp.net core 使用ASP.net core 2 web API和SPA的隐式授权,asp.net-core,azure-active-directory,asp.net-core-2.0,Asp.net Core,Azure Active Directory,Asp.net Core 2.0,我有一个角度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令牌,并将其传

我有一个角度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声明中出现?我计划将用户添加到特定的应用程序角色。

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

您有两个选择:

  • 像你说的那样使用相同的应用注册。在该应用程序上分配用户角色,它们将位于Id令牌中。然后使用Id标记调用API,它也可以看到角色
  • 在API上分配用户角色,并通过在前端解码访问令牌来检查其角色

  • 谢谢你。您知道选项1的任何样本吗?不是特定于此编号的。有通用SPA+API样本:。但它不使用角色。