keycloak提供了完善的授權功能,即在kc端對資源服務器的各種資源進行管理,然后就可以完成對它們的管控,這些資源可以根據kc的用戶、角色、組等信息進行授權。
資源服務器客戶端配置
- 以springboot接口KC為例,說一下它的配置文件
keycloak:
auth-server-url: http://192.168.xx.xx:8080/auth
realm: fabao
resource: democlient # client-id
client-key-password: ec0fd1c6-68b0-4c39-a9fa-c3be25c8ef01 #客戶端密鑰
credentials.secret: ec0fd1c6-68b0-4c39-a9fa-c3be25c8ef01 #客戶端密鑰,policy-enforcer-config.enforcement-mode: ENFORCING時,需要添加這個值
principal-attribute: preferred_username # principal.getName()返回為用戶名
policy-enforcer-config:
enforcement-mode: ENFORCING #kc遠程授權方式
security-constraints:
- auth-roles:
- "*"
security-collections:
- name:
patterns:
- /*
kc遠程集中授權圖
- 流程圖
- 策略與權限
- 資源與權限scope
kc服務端-資源服務器配置
- 需要為當前客戶端,添加它的uma_protected角色
- 開啟遠程授權
- 添加資源
- 添加策略
- 添加權限,實現了為資源綁定策略
說明
上面各圖中,配置了資源admin-resource,路徑是admin開頭的uri;配置了策略admin,包換ROLE_ADMIN角色的人;配置了admin-permission權限,讓它綁定了admin策略,最后把它綁定到資源admin-resource上面。