使用外部身份提供程序IDP与KeyCloak进行直接访问授予

问题描述

我想使用“直接访问授予”对KeyCloak进行身份验证:https://www.keycloak.org/docs/latest/server_admin/index.html#resource-owner-password-credentials-grant-direct-access-grants

当keycloak自己管理用户密码时,我就像一个魅力。

但是,我的情况有所不同:

我希望keycloak充当某些外部IDP的代理。 KeyCloak具有身份代理功能-但仅在“授权代码流”中有效-将用户重定向到外部IDP登录表单。 我有移动应用,并且希望使用“直接访问授权”-这样应用可以与keycloak通信以验证用户身份-并且keycloak作为代理在外部IDP中使用Openid-connect验证该用户

如何实现这种情况?我知道这是不可能的,但也许有人会建议如何为keycloak编写扩展如何使这种情况成为可能?

解决方法

您是否坚持使用Direct Access Grant作为移动应用程序中用户身份验证的方法?我认为,当IDP是第三方服务时,您需要使用授权代码流,因为它不会提供用于验证用户身份的API,即使是您自己的(第一方)IDP,也最好使用授权如OAuth 2.0 Security Best Current Practice第2.4节所述。

要在移动应用中实施授权代码流,您将需要使用应用内浏览器标签来显示IDP提供的登录屏幕。有关详细信息,请参阅RFC 8252: OAuth 2.0 for Mobile and Native Apps