![ADFS:将 SAML 断言转换为 OAuth 令牌?](https://linux22.com/image/718695/ADFS%EF%BC%9A%E5%B0%86%20SAML%20%E6%96%AD%E8%A8%80%E8%BD%AC%E6%8D%A2%E4%B8%BA%20OAuth%20%E4%BB%A4%E7%89%8C%EF%BC%9F.png)
我们使用 Microsoft Active Directory 联合服务 (ADFS) 作为身份验证/联合提供程序。我们使用它通过 SAML 向多个外部供应商、SaaS 提供商等执行身份联合。此外,我们有几家供应商仅支持 OAuth,因此我们使用 ADFS 2016 的 OAuth 支持配置了与这些供应商的集成。因此,我们可以根据需要生成 SAML 断言和 OAuth 访问令牌。
现在我们遇到了这样一种情况:供应商 A(配置为 SAML 身份验证)需要向供应商 B(配置为需要 OAuth 令牌)发出 RESTful 服务调用。有没有办法将 ADFS 生成的 SAML 断言转换为 ADFS 生成的 OAuth 令牌?鉴于这两个凭证都是由 ADFS 生成的,我认为 ADFS 应该有办法执行转换。有没有一个端点,我可以在其中发布 SAML 断言并取回 OAuth 令牌?任何帮助都将不胜感激!!
答案1
虽然我无法回答您有关 ADFS 和 Oauth 的问题,但我可以为您提供一些有关集成两个不同的基于 Web 的 SSO 系统的经验,这可能会给您一些思考。
就我的情况而言,我想要获得一个 Shibboleth IdP(与 SAML 2.0 的 ADFS 相同的角色)来使用现有的专有 SSO 系统。
我所做的是配置我的 IdP 以使用“外部”身份验证,在这种情况下,我让专有 SSO 系统仅保护外部身份验证 URL;这样,当人们登录时,他们会点击外部身份验证 URL --- 并通过其他 SSO 系统工作 --- 然后以经过身份验证的状态返回,通过外部身份验证 URL 到达 IdP,然后 IdP 将授予他们会话。
这表明您实际上并没有将一个系统“转换”为另一个系统,但您可以使用外部身份验证将一个系统提升到另一个系统。
警告:注销会成为更大的问题。我不得不自定义 IdP 附带的 SLO 模板,以集成其他系统的注销系统……ADFS 不会那么灵活。
干杯,卡梅伦