我正在尝试弄清楚如何使用另一台服务器中的凭据和用户数据配置/使用Asp.Net核心授权,通过API访问。
例如,在“Auth”服务器中,我们有Auth数据库,用于存储用户,角色和声明。一些例子:
获取https://auth.myserver.com/v1/users/4/IsInRole/Admin
回应很简单。
或者:
获取https://auth.myserver.com/v1/users/4/GetRolesForUser/
回复是一系列角色。
另一台服务器是资源服务器(也完全基于API,没有前端)。它存储了许多需要角色和声明授权的数据。
另外,我们有第三个玩家:客户。
客户端将:
这一步是我的疑问。我想这应该发生在资源服务器控制器上:
[HttpGet]
[Authorize(Roles = "Admin")] //API CALL HERE TO THE AUTH SERVER (?)
public async Task<IActionResult> GetData()
{
...
基本上,我不知道如何在上下文中验证用户(直到请求被返回),使用我自己的自定义验证过程将其放入HttpContext.User中。
我尽可能地简化了这种架构,以使我的问题更加清晰。请忘记“Auth”服务器的安全性。
答案 0 :(得分:0)
如果你正在使用jwts这个流可以简化角色可以存储在声明中,这意味着在authorize属性中不需要api调用。
资源服务器也不需要验证令牌是否有效可以使用秘密来完成。
考虑一下thinktecture,以下是好资源https://leastprivilege.com/和https://brockallen.com/