Api KeyClope授权服务可为数十个用户的数十个资源提供服务
我目前正试图弄清楚KeyClope授权服务器所提供的功能是否是保护我的应用程序所需要的 所以我有一个PythonRESTAPI,它有(保持简单)作业对象,可以创建、修改、删除等等(通常的CRUD内容)。 到目前为止,API完全不受保护,我们需要一些身份验证才能上线。 我决定使用KeyClope,因为它已经在我们公司安装好了,并使用OAuth2授权代码流和OIDC连接后端和前端到授权服务器 因此,现在用户可以登录到web应用程序客户端,然后使用访问令牌来处理Python后端。 授权过程运行良好,令牌得到验证,我甚至想出了如何获取作用域并在后端验证它们 现在我阅读了关于授权服务的内容,我想知道我是否可以使用它来控制/映射哪个作业属于哪个(keybeapt)用户。像这样:Api KeyClope授权服务可为数十个用户的数十个资源提供服务,api,oauth-2.0,permissions,authorization,keycloak,Api,Oauth 2.0,Permissions,Authorization,Keycloak,我目前正试图弄清楚KeyClope授权服务器所提供的功能是否是保护我的应用程序所需要的 所以我有一个PythonRESTAPI,它有(保持简单)作业对象,可以创建、修改、删除等等(通常的CRUD内容)。 到目前为止,API完全不受保护,我们需要一些身份验证才能上线。 我决定使用KeyClope,因为它已经在我们公司安装好了,并使用OAuth2授权代码流和OIDC连接后端和前端到授权服务器 因此,现在用户可以登录到web应用程序客户端,然后使用访问令牌来处理Python后端。 授权过程运行良好,令
/api/job/job-nr-1 <-> user-id-5 (create, delete, etc)
/api/job/job-nr-1 <-> user-id-1 (read-only)
/api/job/job-nr-2 <-> user-id-3
...
/api/job/job-nr-1 user-id-5(创建、删除等)
/api/job/job-nr-1用户id-1(只读)
/api/job/job-nr-2用户id-3
...
如果我理解正确,每个作业都将是一种资源,用户可以做的事情(创建、删除等)将是作用域
但实际上是否有可能将每个作业映射到一个用户?
是否需要为每个作业用户关系设置策略,以允许一个(且仅一个)用户编辑此作业?
这可以通过API实现吗?作业是动态创建的,所以我自己不能通过管理UI来完成
所有这些听起来都很有用,我想知道KeyClope是否是管理这些权限/关系的合适地方,或者我是否应该为这些权限/关系设置一个单独的数据库。动态授权几乎总是使用范围之外的声明: 您的场景 感觉您需要类似于以下内容的属性/声明来实现授权,其中一些属性/声明是特定于域的,可能会经常更改:
- 用户ID
- 角色
- 与角色关联的权限
- 通用身份数据应存储在KeyClope中
- 特定于域/易失性的数据应存储在您的业务数据中
- 在颁发令牌时,从授权服务器伸出手,从业务数据中获取声明并将其包含在访问令牌中
- 如果第一个选项不可行,则根据访问令牌中的用户ID在API中查找值
在Curity,我们想以一种对任何供应商都适用的方式来解释这一问题的科学性,请参阅一个有效的示例。感谢您提供了这一信息丰富的答案。明天我将通读这篇文章,看看是否有可能通过Key斗篷直接从AS获得这些声明。我不太确定如何将这些声明正确地存储在我的业务数据库中,但也许这篇文章也解释了这一点。酷-我会说这取决于规则的复杂性。人们有时从授权服务器中的所有规则开始,有时将角色和权限等表添加到自己的数据中。两者都没有错——选择的解决方案通常取决于规则的复杂程度,以及您是否觉得多个应用程序会相互冲突。但至少值得注意身份数据和业务数据之间的逻辑分离。