我们称A为提供api和web应用程序的平台。A包含一个使用OAuth2并拥有自己用户的认证/授权服务器(Auth0是所选择的解决方案)对于属于A组织的用户,一切都运行良好。
组织有业务合作伙伴,这些合作伙伴有他们的平台,使用某种遗留身份验证。我们把B称为这个平台。
- B想要访问A的服务
- A trust B
- B认证的用户应该访问A服务而不需要第二次登录A
A允许联合登录,似乎B可以被视为遵循A理解的某些标准的身份提供者(例如OIDC,但其他标准为A所知:Auth0 SSO)。
我想知道如何在不完全改变用户在B上的身份验证方式的情况下将B转换为实现标准的联邦登录解决方案。
我想象有某种接口,带有一个适配器,可以实现像OIDC这样的标准
我发现的解决方案总是意味着从遗留解决方案迁移到标准解决方案。
好问题-因为OIDC没有指定应该如何进行身份验证-只有之前和之后的消息。
接口概念存在于一些提供程序中,例如在security SDK中,它有一个可扩展的身份验证器概念-您可以在GitHub Repos中找到很多这样的概念。
理想情况下
方法大致如下:
- 自定义认证器写入
- 自定义身份验证器插入到授权服务器
- 遗留系统需要更新,以显示新类型请求消息的登录屏幕
- 需要更新遗留系统以提供不同的身份验证结果
在实践中
大多数提供者不支持这种类型的解决方案,对遗留系统的影响可能不是微不足道的。而且很容易出现安全问题。
因此,通常指定合作伙伴在与您集成之前必须满足基于先决条件的标准(例如SAML或OIDC)。这通常是更安全的方法。