我想要自定义密钥克隆身份验证/授权或身份提供者

时间:2019-04-01 08:53:36

标签: keycloak keycloak-services

很久以来我一直在搜寻Google,现在我应该在Keycloak中创建Custom iDP或Authentication provider时有点困惑。

以下是我的要求。

我有多个客户端,每个客户端都具有登录API,该API在成功登录时也会返回JWT令牌,因此业务需求是,当用户尝试登录时,我希望密钥解密使用客户端API进行身份验证,并且一旦用户通过客户端API成功进行身份验证密钥克隆应生成令牌以进行进一步的操作。

另一个问题是,我是否可以使用与Keycloack令牌相同的从客户端返回的令牌,因为客户端上有一些API可以解码令牌并使用令牌中的某些信息。

请提出建议,我有点压力要寻找其他解决方案,无济于事。如果您可以与它共享示例代码,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

“我有多个客户端,每个客户端都有登录API”是什么意思(这意味着由不同领域保护的不同终结点?我想这不是您想要的)。

您在这里提到的内容:

“真正的业务需求是,当用户尝试登录时,我希望密钥解密使用客户端API进行身份验证,一旦用户成功通过客户端API进行身份验证,密钥克隆应生成令牌以进行进一步的操作。”

这确实是Keycloak的标准行为,为什么需要自定义身份验证(用户联合身份验证/身份提供程序)?您尚未从问题描述中弄清楚,为什么需要自定义身份提供者SPI /自定义身份验证联盟?如果您确实需要身份验证SPI,请从此处阅读第8章:  https://www.keycloak.org/docs/latest/server_development/index.html#_auth_spi

那是关于该主题的最佳文档。您是否正在针对不支持openid connect的公司的自定义Auth服务进行身份验证?如果没有,那么您不需要自定义的身份验证SPI。

关于:

“我可以使用与Keycloack令牌相同的从客户端返回的令牌,因为客户端上有一些API可以解码令牌并使用令牌中的某些信息。”

我不确切知道您的意思,但是根据客户适配器的不同,获取/提取承载令牌和保护端点的方式通常会有细微的差异。请从此处开始阅读第3.1章:https://www.keycloak.org/docs/latest/securing_apps/index.html#_client_registration

您会在这里找到针对不同客户端适配器的基本实现/建议,或者至少应该使您在搜索中前进。

希望有帮助。