问题描述
我想使用“直接访问授予”对KeyCloak进行身份验证:https://www.keycloak.org/docs/latest/server_admin/index.html#resource-owner-password-credentials-grant-direct-access-grants
但是,我的情况有所不同:
我希望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。