我应该如何在ASP.NET MVC 4服务提供程序中实现SAMLP 2.0?

我正在使用C#开发一个MVC 4 Web应用程序,并希望使用现有的SAML 2.0身份提供程序来处理登录。 我正在使用与SimpleSAMLphp的 HTTP POST绑定 。

看起来,在.NET 4.5中,我应该使用Windows Identity Foundation 。 首先,我尝试安装身份和访问工具 。 (我使用的是Visual Studio 2013,它应该集成了这个工具,但是VS2013的版本不支持“re-entrancy” ,这意味着我不能用它来为我现有的应用程序添加WIF支持。)

在将Identity and Access Tool指向我的身份提供者的元数据后,我收到以下错误消息:

userSelection.SecurityTokenServiceMetadata.SecurityTokenServiceDescriptor

显然,这是错误消息,表明WIF不支持SAMLP 2.0 。 这似乎与支持的SAML 2.0 令牌不同(至少,这个过时的文档表明存在Microsoft.IdentityModel.Tokens.Saml2命名空间)。

然后我发现了SAML 2.0WIF扩展 。 然而,这是在2011年5月发布的,从那时起似乎没有被触及过。 尽管如此,我下载了扩展程序并尝试构建ZIP文件中包含的SamlConfigTool。 该工具是一个控制台应用程序,通知我:

此工具将提示您创建描述您的信赖方的元数据文件所需的信息。 它将提示下载合作伙伴元数据文件的地址。 最后,它将输出一个名为Changes_To_Web_Config.xml的文件,该文件应对您的网站的web.config文件进行更改以启用SAML保护。

输入我的实体ID和SAML端点后,SamlConfigTool立即崩溃。 好吧,也许我不需要使用配置工具,我可以复制示例ServiceProvider VS项目中完成的工作。 迁移后,我可以在VS2012中打开项目,但我不清楚它究竟是如何工作的 – 它似乎不包含任何C#代码,只是Web.config中的新条目。 我不清楚如何调整此配置来替换我的MVC 4应用程序中的自定义登录代码,并且无论如何依赖于3年前的死库似乎不是一个好主意。

那么, 在ASP.NET MVC 4中实现SAML 2.0的最佳方法是什么 ? 我正在手工解码,编码,解析和压缩XML,感觉应该有一种更简单的方法。

你是对的,WIF(现在转移到System.IdentityModel下的核心.NET)只支持SAML2令牌 ,而不支持实现服务提供者所需的SAML2协议

Kentor.AuthServices是一个基于.NET 4.5构建的ASP.NET MVC的开源SP实现。 安装包并在web.config中添加一些设置 – 无需编码。

免责声明:我是Kentor.AuthServices的作者

据我所知,尚未支持WIF中的SAML2P。 我建议你自己实现它。

您可以使用实现SAML2P的库并在MVC项目中使用它。 您可以使用的一些库是OIOSAML.NET或商业ComponentPro SAML 。

或者可以选择设置中间IAM。 从MVC中,您使用ws- *协议(在visual studio中实现的标准方法)将ideneity provider设置为此中间IAM。 应将此IAM配置为将您的身份validation消息中继到要与SAML2P一起使用的IDP。 在对用户进行身份validation之后,IAM将仅转换声明并发出MVC应用程序信任的新令牌。 尝试查看Shibboleth或ThinkTecture IdentityServer v2 (但第二个没有实现SAML2P,因此您必须自己添加支持)。 或者您可以使用ADFS2。

http://www.nuget.org/packages/SAML2/怎么样? 它说它是OIOSAML.NET的一个分支。

你需要一个图书馆,除非你想自己写。 我一直在使用https://www.nuget.org/packages/ITfoxtec.Saml2.Mvc 。