single-sign-on - Keycloak 与 IDP 和 SSO 的集成
问题描述
在这一点上,我的问题更具理论性。
我有一个用例,我必须将我的应用程序(应用程序 1)与 Keycloak 和 Keycloak 与外部身份提供者集成。在这种情况下,Keycloak 只是一个经纪人。在该外部 IDP 上还注册了其他应用程序。
场景 1:用户既没有登录 App 1,也没有登录 IDP
当用户尝试访问 App 1 时,它最终被重定向到外部 IDP 登录表单并发布身份验证后,它将被重定向回应用程序。这是一个简单的流程。
场景 2:用户已经登录 IDP
当用户已经登录 IDP、会话处于活动状态并且现在访问 App 1 时会发生什么。它是否仍会显示登录表单,或者最终会重定向到 App 1 而不会提示输入用户名和密码?
只有当这可能时,真正的 SSO 才是可能的,因为并非每个应用程序都必须通过相同的 Keycloak(可能有一些应用程序直接与外部 IDP 集成)
解决方案
应用程序通常会重定向到 Keycloak 进行身份验证。Keycloak 检测到有效的 IDP 会话(来自 cookie),它直接返回代码/令牌而不询问用户凭据。
但像往常一样“这取决于”。您的应用程序中可能有奇怪的“SSO”实现(例如直接授权流程),您可能在您的应用程序/登录中使用 iframe,您可能在 Keycloak 中配置了自定义身份验证流程,......所有这些都可能会破坏默认 SSO行为。但默认情况下,SAML/OIDC 是 SSO 协议。
推荐阅读
- react-native - 加载组件后如何更新选项卡的导航参数?
- reactjs - 我可以弹出 react-dev-utils 文件吗?
- google-dfp - Google Ad Manager 获取自定义键值在报告中显示为“未知”
- angular - 在角度分量测试中模拟 setInterval 循环
- docker - 生产者在 org.apache.kafka.common.errors.TimeoutException 上失败:60000 毫秒后元数据中不存在主题 topicTest
- r - R中的并行计算,用于通过循环保存数据
- sql - 当查询很简单且没有链接表时,如何在 Access DB 中修复“操作必须使用可更新查询”
- ssis - 从 cmd 行执行 SSIS 包失败
- mysql - 如何在 BigQuery SQL 中将一组用户分组为 10 个?
- c# - 如何通过让用户在客户端应用程序中输入密码来创建身份用户