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

什么时候在KeyCloak中使用领域角色?

卞成荫
2023-03-14

我正在试验微服务和前端之间的角色映射(在Keycloak术语中是keycloak-clients)。

假设我有两个keycloak客户端:

  • 路由管理-API
  • 路由管理-WebApp

你对这种做法有什么看法?是正确的思维方式吗?我们需要王国角色做什么?

共有1个答案

谷梁浩思
2023-03-14

我建议你可能不需要复合角色。在我看来,api拥有资源,所以您应该将您的客户机角色设计为api,作为资源所有者的api客户机。角色可以命名为“verb-resource”,例如“create-x、read-x、update-x、delete-x”。

即使使用routemanagement-webapp客户端进行身份验证,您仍然可以推断RouteManagement-API的用户的资源角色。

示例JWT

{
  "jti": "0ba58a94-d98e-4f29-abfa-ade95d96a62b",
  "exp": 1589264282,
  "nbf": 0,
  "iat": 1589263982,
  "iss": "http://localhost:8080/auth/realms/master",
  "aud": "routemanagement-webapp",
  "sub": "50b6d1f7-88ea-451c-92bb-fc7f5fcc6683",
  "typ": "Bearer",
  "azp": "routemanagement-webapp",
  "auth_time": 0,
  "session_state": "7a270756-917b-4afc-a06d-054b05e6d41a",
  "acr": "1",
  "allowed-origins": [],
  "realm_access": {
    "roles": [
      "offline_access",
      "uma_authorization"
    ]
  },
  "resource_access": {
    "routemanagement-api": {
      "roles": [
        "manage-regular-stuff"
      ]
    },
    "account": {
      "roles": [
        "manage-account",
        "manage-account-links",
        "view-profile"
      ]
    }
  },
  "name": "Test User",
  "preferred_username": "test.user",
  "enabled": true,
  "email": "test.user@test.com"
}
 类似资料:
  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 我和Kafka一起工作已经一年了,没有自发的领导人更迭发生。但在过去的两周里,这种情况经常发生。Kafka登录: [2015-09-27 15:35:14,826]信息[broker 2上的ReplicaFetcherManager]已删除分区的提取器[myTopic](kafka.server.ReplicaFetcherManager) [2015-09-27 15:35:14,830]信息截

  • 问题内容: 我有一个将客户发送到另一个站点来处理付款的应用程序。客户之外的另一个站点在我们的服务器上调用一个页面,让我们知道付款的状态。被调用页面会检查付款应用程序提供的参数,并检查我们是否知道该交易。然后,它更新数据库以反映状态。这一切都无需与客户进行任何互动即可完成。 我个人选择将此功能实现为JSP,因为将文件拖放到文件系统中比编译和打包文件然后将条目添加到配置文件中要容易得多。 考虑到页面的

  • 问题内容: 有人可以解释什么是无作用域及其目的吗? 假设我有一个豆子 并说我没有将任何作用域bean n1注入到上述每个作用域中,然后我发现当实例化其父bean [r1 / s1 / a1]时,将为每个父bean实例化n1。 由于a1是应用程序作用域,因此a1中的作用域bean在整个a1中都不可用。直到不销毁s1并再次创建s1时,s1中的scope Bean才可用。 这是正确的吗? 以及使用它的目

  • 问题内容: 我想知道我什么时候应该在Spring中准确使用范围?我了解,如果需要Bean,则返回相同的对象实例。 那我们为什么要考虑呢? 通过示例进行解释将有助于您理解其必要性。 问题答案: 要明确简单的定义: 原型范围=每次注入/查找新对象时都会创建一个。每次都会使用new 。 单例范围=每次注入/查找相同对象时,都会返回该对象。在这里它将实例化一个实例,然后每次返回它。 原型bean是在使用时

  • 问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。