使用ASP.net核心2 Web API和SPA进行隐式授权

时间:2018-06-09 08:27:49

标签: asp.net-core azure-active-directory asp.net-core-2.0

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

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

1 个答案:

答案 0 :(得分:1)

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

您有两个选择:

  1. 使用与您说的相同的应用注册。在该应用上分配用户角色,它们将位于Id令牌中。然后使用Id令牌调用API,它也可以看到角色。
  2. 在API上分配用户角色,并通过解码前端的访问令牌来检查其角色。