gpt4 book ai didi

authorization - 为 OpenID 连接添加授权

转载 作者:行者123 更新时间:2023-12-04 16:02:00 25 4
gpt4 key购买 nike

我正在设计一个包含身份验证和授权的微服务系统。我了解使用 OpenID 连接的身份验证部分,但我想知道授权是如何进入画面的。

让我们假设以下情况:我们有一个用户坐在他的浏览器前连接到一个网络应用程序(“客户端”或“依赖方”)。首先,他登录到客户端,然后他想要(通过客户端)访问订单服务。但是,并非每个用户都可以查看订单,例如只允许销售部门的员工查看订单。

对于登录过程,用户、依赖方 (RP) 和身份提供者谈论 OpenID 连接。最后,RP 有一个标识用户的 id token 。

现在,在访问订单服务时,某些组件必须检查用户权限。该组件位于何处? RP在查询订单服务之前是否先要权限?订单服务是否询问用户权限?哪些信息/ token 被发送到订单服务和“授权组件”?

我也在 OpenID 连接中看到了访问 token ,但据我所知,这些是 OAuth2 token ,表明资源所有者已将其访问权限委托(delegate)给客户端。但是,这不适用于我没有资源所有者的问题,而是想检查是否允许用户查看订单。这可能不是 OpenID 连接的一部分,但对我来说这似乎是一个标准问题,尽管我找不到任何示例。

以防万一:我正在使用 ASP .NET 核心和 IdentityServer4 进行身份验证,并且 IdProvider 是我系统的一部分(无第三方登录)。如果其他协议(protocol)能更好地适应这个问题,我很高兴了解它们!

最佳答案

你是对的。

"Authentication" (例如 OpenID 的 IDServer4 实现)是一种用于验证您是谁的机制。

"Authorization"确定可以授予授权用户哪些特权。它们是两种不同的东西。

“授权”是“应用程序级别的事情”。您的APP决定:

a) 存在哪些角色,

b) 如何将经过身份验证的用户分配给角色

c) 根据角色授予哪些权限。

对于“企业应用程序”,一个 "Directory Service" (例如,MS Active Directory)通常用于将用户映射到角色。其他时候,应用程序自己进行映射。

换句话说,一旦您确定了用户的身份,就有很多很多不同的方法来分配“权限”。我能建议的最好的办法是考虑某种“基于角色的访问控制”(RBAC)。

例如:

关于authorization - 为 OpenID 连接添加授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50204355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com