Keycloak 是一个开源的身份和访问管理解决方案,它允许开发者将权限与角色一起包含到访问令牌中,从而实现对资源的细粒度访问控制。以下是如何在 Keycloak 中实现这一功能的步骤:
Clients
并创建一个新的客户端。confidential
或 bearer-only
,具体取决于你的应用需求。Roles
并创建新的角色。Permissions
并创建新的权限。Policies
来定义谁可以访问这些资源。Access Type
和 Service Accounts
。Service Accounts Enabled
被启用。Mappers
标签下,添加一个 User Realm Role
或 User Model Attribute
mapper,以确保角色信息包含在访问令牌中。Advanced Settings
。Use Resource Roles
选项。Mappers
标签下,添加一个 Resource Scopes
mapper,以确保权限信息包含在访问令牌中。realm_access
和 resource_access
部分,确保角色和权限信息包含在内。假设我们有一个名为 myrealm
的 Realm 和一个名为 myclient
的客户端。
user
和 admin
。myresource
。read
和 write
。myresource:read
和 myresource:write
。user
角色可以 read
,admin
角色可以 read
和 write
。Mappers
标签下,添加 User Realm Role
mapper。Advanced Settings
中,启用 Use Resource Roles
。user
角色请求 read
作用域的访问令牌。admin
角色请求 read
和 write
作用域的访问令牌。realm_access
和 resource_access
部分,确保角色和权限信息正确。通过以上步骤,你可以在 Keycloak 中将权限与角色一起包含到访问令牌中,从而实现对资源的细粒度访问控制。
领取专属 10元无门槛券
手把手带您无忧上云