如何验证SAML 2.0 Bearer Assertion以返回Web API的OAuth2 Bearer令牌?

时间:2014-04-04 19:59:00

标签: asp.net-web-api oauth-2.0 saml-2.0 owin

我工作的环境使用Shibboleth提供单点登录(SSO)功能,我们希望更新使用基本身份验证的应用程序,以便能够使用Shibboleth身份验证进行API调用。根据我的阅读,有specifications in process,但它们似乎并没有被广泛支持。目前我们在其他一些应用程序中使用Microsoft.Owin.Security.OAuth,并希望继续使用该方法。因此,有没有办法可以注册并调用一个能够正常使用SAML 2.0 Bearer Assertion的/token URI?

1 个答案:

答案 0 :(得分:1)

您可以自定义Shibboleth IDP,使其生成并返回在您的环境中有效的OAuth 2.0 Bearer Token。在单点登录期间,令牌将作为SAML属性提供给您的SP。假设您将使用Shibboleth SP插件来保护您的应用程序,您可以将SP配置为将带有令牌的SAML属性作为HTTP标头发送到您的应用程序,然后在API调用中将其用作令牌。 / p>

Shibboleth定制将非常简单(自定义属性生成器的实现)。您需要使用Shibboleth实例从Microsoft.Owin.Security.OAuth服务器共享加密材料(共享密钥/不对称密钥),以便能够正确签署令牌。

Microsoft.Owin.Security.OAuth服务器和Shibboleth都应该在您的控制之下,以便安全地应用此方法。如果不是这样的话,Shibboleth仍然可以自定义为代表您的asp.net应用程序请求令牌(例如使用客户端凭据授权),然后再将其作为SAML属性提供。

这种方法当然颠覆了您向SAM.Owin.Security.OAuth添加对SAML令牌的支持的最初想法。我对C#生态系统的了解有限,但似乎this project已经包含了对owin库添加SAML 2 Bearer支持的扩展。请参阅configuration extensionexample of usage