【问题标题】:How can I validate a SAML 2.0 Bearer Assertion to return an OAuth2 Bearer token for a web API?如何验证 SAML 2.0 Bearer Assertion 以返回 Web API 的 OAuth2 Bearer 令牌?
【发布时间】:2014-04-04 19:58:59
【问题描述】:
【问题讨论】:
标签:
asp.net-web-api
oauth-2.0
saml-2.0
owin
【解决方案1】:
您可以自定义 Shibboleth IDP,使其生成并返回在您的环境中有效的 OAuth 2.0 Bearer Token。在单点登录期间,令牌将作为 SAML 属性提供给您的 SP。假设您将使用用于 IIS 的 Shibboleth SP 插件来保护您的应用程序,您可以配置 SP 以将带有令牌的 SAML 属性作为 HTTP 标头发送到您的应用程序,然后在您的 API 调用中将其用作令牌。
Shibboleth 自定义将非常简单(自定义属性生成器的实现)。您需要与您的 Shibboleth 实例共享来自 Microsoft.Owin.Security.OAuth 服务器的加密材料(共享密钥/非对称密钥),以便它能够正确签署令牌。
Microsoft.Owin.Security.OAuth 服务器和 Shibboleth 都应在您的控制之下,以使此方法安全适用。如果不是这种情况,仍然可以自定义 Shibboleth 以代表您的 asp.net 应用程序请求令牌(例如,使用客户端凭据授予),然后再次将其作为 SAML 属性提供。
这种方法当然颠覆了您最初的想法,即向 Microsoft.Owin.Security.OAuth 添加对 SAML 令牌的支持。我对 C# 生态系统的了解有限,但似乎this project 已经包含将 SAML 2 Bearer 支持添加到 owin 库的扩展。请参阅 configuration extension 和 example of usage。