JHipster是否支持Keycloak客户端资源授权配置?

时间:2018-04-15 14:21:44

标签: jhipster keycloak

我有一个JHipster网关和微服务,目前配置为通过Keycloak使用OAUTH / OIDC。目前,经过身份验证的用户可以使用所有资源。我想使用keycloak中可用的细粒度安全性(在JHipster Microservice客户端ID上启用授权)通过资源ID进一步保护(如Keycloak文档中所述) https://www.keycloak.org/docs/latest/authorization_services/index.html#_resource_server_enable_authorization。例如,将* / api / companies / {id}限制为仅限某些Keycloak用户/组。

这在Jhipster中得到了支持吗?基于日志,看起来AccessControlFilter可以配置为限制,但我不清楚它如何连接到Keycloak细粒度资源认证。

2018-04-15 07:11:20.905 DEBUG 18184 --- [  XNIO-2 task-8] c.e.gateway.aop.logging.LoggingAspect    : Enter: com.example.gateway.web.rest.AccountResource.getAccount() with argument[s] = [org.springframework.security.oauth2.provider.OAuth2Authentication@2ea9380c: Principal: user; Credentials: [PROTECTED]; Authenticated: true; Details: remoteAddress=0:0:0:0:0:0:0:1, sessionId=<SESSION>, tokenType=bearertokenValue=<TOKEN>; Granted Authorities: company.jcb.role1, ROLE_USER]
2018-04-15 07:11:20.907 DEBUG 18184 --- [  XNIO-2 task-8] c.e.gateway.aop.logging.LoggingAspect    : Exit: com.example.gateway.web.rest.AccountResource.getAccount() with result = com.example.gateway.domain.User@3a45e83a
2018-04-15 07:11:22.208 DEBUG 18184 --- [oundChannel-104] c.e.g.web.websocket.ActivityService      : Sending user tracking data ActivityDTO{sessionId='hchu0fkx', userLogin='user', ipAddress='/0:0:0:0:0:0:0:1:54212', page='/', time='2018-04-15T13:11:22.208Z'}
2018-04-15 07:11:24.634 DEBUG 18184 --- [ XNIO-2 task-19] c.e.g.g.a.AccessControlFilter            : Access Control: allowing access for /micro/api/companies, as no access control policy has been set up for service: micro

1 个答案:

答案 0 :(得分:0)

由于Jhipster不支持https://www.keycloak.org/docs/latest/authorization_services/index.html#_resource_server_enable_authorization中描述的Keycloak资源服务器授权,为了更细致地保护资源,我决定:

  • 创建我希望在微服务中保护的资源后,我通过Keycloak API动态创建Keycloak组层次结构。例如,如果我想保护对公司123和456的访问权限并且我有角色:客户经理,员工,主管我创建了Keycloak组层次结构
123
- Account Manager
- Employee
- Supervisor  

456
- Account Manager
- Employee
- Supervisor

可以将用户帐户分配给各个组。例如,用户“John”可以访问公司“456”和角色“Employee”

  • 通过Keycloak Mappers(这是Keycloak客户端配置/ Mappers中的配置)将组层次结构添加为对JWT令牌的声明

  • 在微服务中,对访问受限资源的任何查询使用添加的JWT组声明。