single-sign-on - 使用 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?
解决方案
据我了解,如果您注册此主应用程序并使用它来获取令牌以授权 app1 和 app2,它将使访问令牌无用。由于客户端 ID 和密码属于主应用程序,因此访问令牌将作为令牌中的受众返回。如果您在通过 app1 或 app2 访问资源时验证令牌中的声明,则会返回错误,因为未满足目标受众。如果您忽略这一事实,任何拥有令牌的人都可以访问导致安全漏洞的任何资源。
希望这可以帮助。
推荐阅读
- windows - 使用 Kotlin 打开 Windows 记事本
- algorithm - 前 N 阶乘积的尾随零
- python - 字段 'id' 需要一个数字,但得到了 ' '
- python - Pytorch 张量的最小值和最大值
- firebase - 如何访问 Cloud Firestore 中的数据并将其设置为 Flutter 中的局部变量
- python - Python有没有办法在浏览器中打开gmail电子邮件?
- ruby-on-rails - Rails 无法让 collection_select 分配父模型 id,但 fields_for 工作嵌套形式
- python - 将 scipy linprog 中的设置与 PuLP 匹配
- classloader - ClassLoader 不包含类
- java - 使用 BasicAuth 的 Spring Boot SOAP WebService 集成测试