2017-04-08 69 views
0

我想弄清楚如何配置/使用Asp.Net核心授权凭证和用户数据在另一台服务器,通过API访问。Asp.Net核心 - 来自另一台服务器的自定义授权和身份?

例如,在“Auth”服务器中,我们有Auth数据库,用于存储用户,角色和声明。一些例子:

GET https://auth.myserver.com/v1/users/4/IsInRole/Admin

响应是一个简单的布尔。

或者:

GET https://auth.myserver.com/v1/users/4/GetRolesForUser/

的响应是角色的列表。

另一台服务器是资源服务器(也完全是基于API的,没有前端)。它存储了大量需要角色和声明授权的数据。

另外,我们有第三个玩家:客户。

客户将:

  1. AUTH服务器,以获得一个承载和刷新令牌,使用用户名和密码
  2. 客户存储这些令牌,并发送承载到资源服务器获取一些数据
  3. 资源服务器将作为k为AUTH服务器如果承载令牌是有效
  4. 如果是,那么资源服务器需要再次询问AUTH服务器有关具有承载令牌的用户,如果用户有必要的孔/声称是访问请求的资源所必需的。

第4步是我的疑问。我想,应该发生在资源服务器控制器:基本上

[HttpGet] 
[Authorize(Roles = "Admin")] //API CALL HERE TO THE AUTH SERVER (?) 
public async Task<IActionResult> GetData() 
{ 
    ... 

,我不知道如何认证上下文(只是直到返回请求)的用户,把它在HttpContext.User中,使用我自己的自定义验证过程

我试图尽可能简化这个架构,使我的问题更清晰。请忘记“Auth”服务器的安全性。

回答

0

如果您使用jwts,这个流程可以被简化,角色可以存储在声明中,这意味着在授权属性中不需要api调用。

此外资源服务器不需要验证令牌是否有效,可以使用秘密完成。

看看以下是好资源https://leastprivilege.com/https://brockallen.com/