首页 > 解决方案 > 使用 keycloak 保护应用程序

问题描述

我需要一些帮助来使用 keycloak 保护我的应用程序:

我有几个使用 Spring Security 的 grails 应用程序(App1 和 App2)。但是,目前我正在使用 keycloak REST API 通过传递用户名和密码来验证用户并接收令牌,而无需在 keycloak 中将这些应用程序注册为客户端。但是当我们想要支持 SSO、社交登录、kerberos 和 Keycloak 提供的其他许多强大功能时,这种方法似乎效率低下。所以我想出了下面的方法来支持 SSO/kerberos 但想知道 Keycloak 是否可以解决我们的问题。

“创建一个新的spring boot主应用程序(App3)并注册Keycloak并将登录页面重定向到Keycloak。登录成功后,使用keycloak提供的令牌并将其传递给App1和App2并调整我现有的代码流来处理这是否可能,因为我没有在 keycloak 中为 app1 和 app2 创建任何客户端,而只是为作为主应用程序的 app3 创建?是否必须在 Keycloak 中注册/创建所有客户端以支持 SSO?

标签: single-sign-onkeycloak

解决方案


据我了解,如果您注册此主应用程序并使用它来获取令牌以授权 app1 和 app2,它将使访问令牌无用。由于客户端 ID 和密码属于主应用程序,因此访问令牌将作为令牌中的受众返回。如果您在通过 app1 或 app2 访问资源时验证令牌中的声明,则会返回错误,因为未满足目标受众。如果您忽略这一事实,任何拥有令牌的人都可以访问导致安全漏洞的任何资源。

希望这可以帮助。


推荐阅读