我们正在考虑使用keycloak作为我们的SSO框架。
根据多租户支持的keycloak文档,应用服务器应该拥有所有的keycloak.json认证文件,获取这些文件的方式来自keycloak admin,有没有办法通过它来动态获取它们API?或者至少获得领域的公钥?我们希望避免为每个领域手动添加此文件到应用程序服务器(以避免停机等)。
另一个多租户相关的问题 - 根据文档,应该为每个领域创建相同的客户端,所以如果我有100个领域和10个客户端,我应该定义相同的10个客户端100次?还有其他选择吗?
我们的一个流程是后端微服务,应该针对应用程序(定义为keycloak客户端)进行身份验证,我们希望避免在服务器上保留user / psw出于安全原因,有没有办法管理员可以获取令牌并将其手动放置在该微服务的服务器文件系统上吗?有没有在keycloak UI中生成此令牌的选项?
提前致谢。
答案 0 :(得分:4)
所有Keycloak功能都可以通过admin REST API获得,因此您可以自动执行此操作。领域的公钥可通过http://localhost:8080/auth/realms/{realm}/
每个租户的领域将提供特定于租户的登录页面。因此,这是要走的路 - 10个客户注册100次。请参阅Keycloak文档的Client Registration一章中的更多内容。如果你不需要特定的主题,你可以选择将所有内容放在一个领域,但是你会在这条路上失去很多灵活性。
如果您的后端微服务应该像一个(技术)用户,您可以发出一个不会过期的脱机令牌。 This is the online documentation for offline tokens。目前,没有管理员功能可以为管理员检索用户的脱机令牌。你自己需要建立这个。管理员稍后可以使用给定的管理API撤销离线令牌。