Keycloak Realm VS Keycloak 客户端

Posted

技术标签:

【中文标题】Keycloak Realm VS Keycloak 客户端【英文标题】:Keycloak Realm VS Keycloak Client 【发布时间】:2019-10-26 22:18:53 【问题描述】:

我最近正在开发用于 SSO 的 Keycloak 6.0.1,用于对组织中的多个应用程序进行身份验证。我对客户和领域之间的区别感到困惑。

如果我要为 SSO 管理 5 个不同的应用程序,那么我是否必须创建 5 个不同的客户端或 5 个不同的领域?

如果我说我必须在 1 个领域下创建 5 个不同的客户端,那么我可以为同一领域中的不同客户端执行不同的身份验证流程吗?

【问题讨论】:

是的,您需要在 1 个领域下创建 5 个客户端,并且可以执行不同的身份验证流程 【参考方案1】:

根据 Keycloak 文档

    领域 - 领域管理一组用户、凭据、角色和组。用户属于并登录到领域。领域相互隔离,只能管理和验证他们控制的用户。

    客户端是可以请求 Keycloak 对用户进行身份验证的实体。大多数情况下,客户端是希望使用 Keycloak 来保护自己并提供单点登录解决方案的应用程序和服务。客户端也可以是只想请求身份信息或访问令牌的实体,以便他们可以安全地调用网络上受 Keycloak 保护的其他服务。

对于您的方案,您可以在一个领域下创建 5 个不同的客户端。 Keycloak 为单点登录提供了开箱即用的支持。有关更多信息,请参阅 Keycloak 文档keycloak documentation link

【讨论】:

【参考方案2】:

Keycloak 的核心概念是 Realm。领域保护和管理 一组用户、应用程序和已注册的安全元数据 oauth 客户端。用户可以在特定领域内创建 管理控制台。角色(权限类型)可以定义在 领域级别,您还可以设置用户角色映射来分配 这些权限授予特定用户。

http://www.mastertheboss.com/jboss-frameworks/keycloak/introduction-to-keycloak

一般来说,客户端代表一些用户可以访问的资源。 Keycloak 的内置客户端供 keycloak 内部使用。

应用示例可以是任何移动应用。客户端可以是一个简单的 REST API。

【讨论】:

以上是关于Keycloak Realm VS Keycloak 客户端的主要内容,如果未能解决你的问题,请参考以下文章

Vaadin 8(没有 Spring Boot/Security)和 Keycloak 不起作用

Keycloak - 是不是可以在领域之间共享一组共同的用户?

Grails、Spring Security 和 Keycloak:表单以 ISO-8859-1 而不是 UTF-8 提交

Keycloak nodeJS总是得到403

Spring Boot Keycloak 多租户配置

Keycloak忘记密码设置