【发布时间】:2021-08-01 01:09:21
【问题描述】:
我目前正在尝试确定 Keycloak 授权服务器提供的 Authorization Services 是否是我需要保护我的应用程序的东西。
所以我有一个 Python Rest API,它有(为了简单起见)可以创建、修改、删除等的作业对象(通常是 CRUD 的东西)。 到目前为止,API 完全不受保护,我们需要一些 Auth 才能使其上线。 我决定使用 Keycloak,因为它已经在我们公司进行了设置,并使用 OAuth2 授权代码流和 OIDC 连接了后端和前端到授权服务器。
所以现在用户可以登录到 web-app 客户端,然后使用访问令牌对 Python 后端进行操作。 授权过程正常,令牌得到验证,我什至想出了如何获取范围并在后端验证它们。
现在我阅读了有关授权服务的内容,我想知道是否可以使用它来控制/映射哪个作业属于哪个(Keycloak)用户。像这样:
/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
...
如果我理解正确的话,每个 Job 都是一个资源,而用户可以做的事情(创建、删除等)就是范围。
但是实际上可以将每个作业映射到一个用户吗? 我是否需要为每个作业 用户关系设置策略以允许一个(且只有一个)用户编辑此作业? 这可以通过 API 完成吗?作业是动态创建的,因此我无法通过管理 UI 自己执行此操作。
这听起来很有效,我想知道 Keycloak 是否是管理这个的正确地方,或者我是否应该为这些权限/关系设置一个单独的数据库。
【问题讨论】:
标签: api oauth-2.0 permissions authorization keycloak