当前位置: 首页 > 知识库问答 >
问题:

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

宦兴朝
2023-03-14

我有一个JHipster网关和微服务,目前配置为通过KeyCloak使用OAuth/OIDC。目前,所有资源都可供经过身份验证的用户使用。我希望使用keycloak中可用的细粒度安全性(启用对JHipster微服务客户机id的授权),通过资源id(如keycloak文档中所引用的)https://www.keycloak.org/docs/latest/authorization_services/index.html#_resource_server_enable_authorization来进一步保护安全。例如,将*/api/companes/{id}限制为只允许某些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个答案

洪楚
2023-03-14

由于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映射器(这是Keycloak客户机配置/映射器中的一个配置)将组层次结构添加为对JWT令牌的声明

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

  •  类似资料:
    • 我们使用keycloak-adapter与Jetty一起使用KeyCloak进行身份验证和授权。根据OIDC Auth流程的Keycloak文档: 我们有连接到Jetty并使用Auth的webapps。因此,我们创建了一个公共客户端,它对WebApp/REST身份验证非常有效。 问题是,一旦我们启用授权,客户端类型就会从公共类型转换为机密类型,并且不允许将其重置为公共类型。现在,我们在汤里。由于授

    • 我有以下场景:一个客户端应用程序试图访问API网关后面的APIendpoint。我想验证(使用id和秘密)应用程序,如果它是应用程序A允许它访问endpoint/信用,如果它是应用程序B允许它访问endpoint/借方。 我假设API网关应该验证一个调用是否应该被拒绝。你能告诉我我的工作流应该是什么样子,我应该使用什么Keycloak功能吗?

    • 遵循以下文档:https://docs.microsoft.com/fr-fr/aspnet/core/grpc/authn-and-authz?view=aspnetcore-3.0#承载令牌身份验证,我尝试配置我的GRPC客户端以自动注入JWT令牌。 但它被Grpc.Core中的一个例外“提供的通道凭据不允许组合”窒息 这是什么意思?我应该如何提供HTTP授权标头?

    • 我可以使用,其中一个keycloak客户机与另一个keycloak客户机通信。然而,只有当我登录到第一个keycloak客户机时,它才起作用,即它向keycloak服务器发送客户机ID、客户机机密、用户名和密码。如果我没有在第一个客户机上使用用户和密码进行身份验证,我会得到“无法设置授权头,因为没有身份验证原则”。但是我已经将keycloak配置为对第一个客户机使用服务帐户(客户机凭据授权),因此

    • 我正在编写一个类,用于创建对BigQuery和Google云存储的授权。 在过去,我曾使用,但已被弃用。我试图使用,但我发现它只允许我使用,而我需要。 我知道可以从转换为,但我不知道如何将它们转换成相反的方向(转换为)。例如,我像这样创建连接: 有人能给我指明如何实现这一目标的方向吗? 谢谢!

    • 资源是通过功能生成的对象,如数据看板新建的看板、用户分群新建的分群、事件分析等分析工具保存的书签等。通过资源权限可以实现从每一个独立资源的粒度来控制不同用户能够对该资源进行哪些操作(资源的共享操作),以及哪些用户可以看到资源(资源共享范围)。 1. 为什么需要资源权限 以“数据看板”这类资源为例,同一个站点允许创建数十个数据看板,不同数据看板对应不同的分析命题,如“推广数据看板”“运营活动看板”“