首页 文章

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

提问于
浏览
0

我试图通过 API 访问另一台服务器中的凭据和用户数据,以确定如何 configure/use Asp.Net 核心授权。

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

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

回应是一个简单的布尔。

要么:

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

响应是一个角色列表。

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

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

客户将:

  • 请求auth服务器使用用户名和密码获取承载和刷新令牌

  • 客户端存储这些令牌并将承载发送到资源服务器以获取一些数据

  • 如果承载令牌有效,资源服务器将询问auth服务器

  • 如果是,则资源服务器需要再次向auth服务器询问具有该承载令牌的用户,以及该用户是否具有访问所请求资源所必需的 holes/claims。

这一步是我的疑问。我想这应该发生在资源服务器控制器上:

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

基本上,我不知道**如何在上下文中验证用户(直到请求被返回),使用我自己的自定义验证过程将其放在 HttpContext.User 中。

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

1 回答

  • 0

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

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

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

相关问题