如何在KeyCloak中实现集成SAML应用的统一登录选择页面?
KeyCloak实现登录后应用列表导航(类似Okta应用门户)
完全可以实现。KeyCloak自带账户控制台功能,支持用户登录后查看并跳转至有权访问的集成应用,无需单独使用各应用的登录URL。以下是具体实现步骤:
1. 启用内置账户控制台的应用列表
- 登录KeyCloak管理后台,进入你配置了AWS和GitLab的Realm
- 进入Clients页面,找到内置的
account客户端(这是KeyCloak默认的用户账户控制台) - 在
Settings标签页中,确认Enabled设为On,Access Type为public - 切换到
Client Scopes标签页,添加roles和client roles这两个内置Scope,确保系统能获取用户有权访问的应用列表 - 用户访问账户控制台URL(格式为
https://你的KeyCloak域名/realms/你的Realm名/account/),登录后点击Applications标签,就能看到所有自己有权限访问的集成应用(包括AWS、GitLab)
2. 配置应用跳转链接
- 针对AWS和GitLab的客户端,在KeyCloak管理后台进入对应Client的
Settings标签页 - 正确设置
Root URL和Valid Redirect URIs(需匹配应用的实际登录回调地址) - 额外配置
Base URL,这样账户控制台的应用列表中,点击应用名称就能直接跳转到对应应用的主页(无需手动输入URL)
3. 自定义应用门户(可选)
如果内置账户控制台的样式不符合需求,可以做以下优化:
- 自定义主题:复制KeyCloak默认主题(如
keycloak),修改account主题下的applications.ftl模板文件,调整UI布局、添加应用图标或分类,让界面更贴近Okta的体验 - 自行开发门户:调用KeyCloak的用户信息API,获取用户有权限的客户端列表,前端展示这些应用,点击时跳转到应用的KeyCloak登录入口(利用SSO自动完成登录)
4. 优化登录流程
- 在Realm的
Settings->Login页面,设置Post Login Redirect URI为账户控制台的URL,用户登录后会直接进入应用列表页面 - 确保所有集成应用的登录入口都指向KeyCloak的认证地址,用户未登录时会先跳转到KeyCloak登录,登录完成后可直接进入应用,后续可随时回到账户控制台切换其他应用
注意事项
- 只有用户拥有对应客户端的角色或权限时,应用才会在列表中显示,测试时建议使用普通用户账号(管理员默认能看到所有客户端)
- 确保AWS和GitLab的客户端配置中,
Authorization Enabled选项已正确启用,否则可能无法正常获取应用权限信息
内容的提问来源于stack exchange,提问作者Lalit Shukla
相关产品推荐
相关产品推荐

