Doorkeeper借助OpenID Connect扩展能否实现第三方IdP用户联邦?
结论
仅靠Doorkeeper的OpenID Connect扩展不能直接实现和第三方IdP的身份联邦对接。
原因说明
这个扩展的核心作用是给Doorkeeper补充OpenID Connect协议的身份提供方(OP)能力,也就是让你部署的Doorkeeper本身对外充当SSO身份源,给接入的各类业务系统提供登录鉴权服务。它本身没有内置依赖方(RP)相关的逻辑,不具备主动向第三方IdP发起认证请求、解析第三方返回的身份断言、完成跨域身份映射绑定的能力,没法单独完成联邦对接流程。
落地实现方案
如果要基于Doorkeeper实现第三方IdP身份联邦,可以通过补充依赖方能力的方式实现,常用方案有两种:
- 搭配专门的协议客户端库开发联邦逻辑:直接在承载Doorkeeper的Rails应用中集成成熟的OIDC、SAML客户端库(比如
omniauth-openid-connect、ruby-saml),实现对接第三方IdP的完整登录流程,拿到第三方返回的用户身份信息后,和本地Doorkeeper维护的用户体系做映射绑定。用户通过第三方IdP完成认证后,再由Doorkeeper给接入的自有业务系统签发访问令牌、ID Token,间接完成联邦能力的打通。 - 前置身份代理层:在Doorkeeper服务前部署支持多协议联邦的身份代理组件,由代理层完成和各类第三方IdP的对接适配、身份校验工作,再通过统一的用户标识和后端Doorkeeper做身份同步,Doorkeeper只需要信任前置代理传递的已认证身份即可,不需要单独适配每个第三方IdP的协议逻辑。
补充说明:如果你的需求是让第三方IdP信任你的Doorkeeper服务作为身份源,那这个OpenID Connect扩展本身就可以直接支持,只需要对方按照标准OIDC协议对接Doorkeeper暴露的OIDC端点即可,不需要额外做定制开发。
内容的提问来源于stack exchange,提问作者alexanoid
相关产品推荐
相关产品推荐

