繁体   English   中英

Asp.Net Core-来自其他服务器的自定义授权和身份?

[英]Asp.Net Core - Custom Authorization and Identity from another server?

我试图弄清楚如何使用通过API访问的另一台服务器中的凭据和用户数据来配置/使用Asp.Net Core授权。

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

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

响应很简单。

要么:

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

响应是角色列表。

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

另外,我们还有第三个参与者:客户。

客户将:

  1. 使用用户名和密码,要求身份验证服务器获取承载和刷新令牌
  2. 客户端存储这些令牌,然后将承载发送到资源服务器以获取一些数据
  3. 资源服务器将询问身份验证服务器,承载令牌是否有效
  4. 如果是,则资源服务器需要再次向auth服务器询问具有该承载令牌的用户,以及该用户是否具有访问所请求资源所需的必要漏洞/要求。

我怀疑这四个步骤。 我想这应该在资源服务器控制器上发生:

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

基本上,我不知道如何使用上下文(在返回请求之前)对用户进行身份验证,使用我自己的自定义验证过程将其放入HttpContext.User中

我试图尽可能简化此体系结构,以使我的问题更加清楚。 请忘记“身份验证”服务器上的安全性。

如果您正在使用jwts,则可以简化此流程,可以将角色存储在Claims中,这意味着在authorize属性中不需要api调用。

另外,资源服务器不需要验证令牌是否有效(可以使用密钥来完成)。

查看thinktecture,以下是不错的资源https://leastprivilege.com/https://brockallen.com/

暂无
暂无

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

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