C#ASP.NET单点登录实现

时间:2013-01-13 22:44:52

标签: c# asp.net single-sign-on

我的任务是为我们的客户实施单点登录,作为我们下一版本的一部分。流程如下:

  1. 用户使用学校提供给他/她的学生ID /密码登录学校的主门户系统。
  2. 用户点击指向我公司产品的链接。
  3. 用户自动进入仪表板页面,就像他们刚刚通过我们网站上的登录表单登录一样。
  4. 因此,有两种机制可以将用户身份验证到我们的网站中:

    1. 来到我们产品的主页,并使用我们存储在本地系统中的电子邮件/密码登录。
    2. 使用单点登录,学生已使用学生ID和密码登录学校的主系统。
    3. 如果我们的产品实现在ASP.NET中(而不是Java / Ruby),我们应该使用CAS,JOSSO还是其他一些第三方单点登录产品?或者.NET环境中是否有可用的东西,对于我们作为.NET公司来说更简单?

5 个答案:

答案 0 :(得分:53)

为.NET应用程序实现SSO有多种选择。

在线查看以下教程:

单点登录的基础知识 2012年7月

http://www.codeproject.com/Articles/429166/Basics-of-Single-Sign-on-SSO

GaryMcAllisterOnline:ASP.NET MVC 4,ADFS 2.0和第三方STS集成(IdentityServer2) 2013年1月

http://garymcallisteronline.blogspot.com/2013/01/aspnet-mvc-4-adfs-20-and-3rd-party-sts.html

第一个使用ASP.NET Web Forms,而第二个使用ASP.NET MVC4。

如果您的要求允许您使用第三方解决方案,请考虑使用OpenID。有一个名为 DotNetOpenAuth 的开源库。

有关详细信息,请参阅MSDN博客文章Integrate OpenAuth/OpenID with your existing ASP.NET application using Universal Providers

希望这有帮助!

答案 1 :(得分:9)

我迟到了,但是对于选项#1,我会选择 IdentityServer3(。NET 4.6或更低版本)或IdentityServer4(与Core兼容)。

您可以在应用中重复使用现有的用户存储,并将其插入IdentityServer的用户存储。然后必须将客户端指向您的IdentityServer作为开放ID提供程序。

答案 2 :(得分:6)

有几个提供SSO支持的身份提供商,也包括第三方**产品。

**第三方产品的唯一问题是它们按用户/月收费,而且价格相当昂贵。

可用的一些工具和.NET的API是:

如果您决定使用自己的实现,可以使用以下按编程语言分类的框架。

  • C#

    • IdentityServer3(OAuth / OpenID协议, OWIN / Katana
    • IdentityServer4(OAuth / OpenID协议, ASP.NET核心
    • OAuth 2.0 by Okta
  • 的Javascript

    • passport-openidconnect(node.js)
    • oidc-provider(node.js)
    • openid-client(node.js)
  • 的Python

    • pyoidc
    • Django OIDC提供商
  

我会使用IdentityServer4和ASP.NET Core应用程序,它易于配置,您还可以添加自己的身份验证提供程序。它使用比SAML 2.0和WS-Federation更新的 OAuth / OpenID 协议。

答案 3 :(得分:1)

UltimateSAML SSO是符合OASIS SAML v1.x和v2.0规范的.NET工具包。它提供了一种优雅,简便的方法,可将对单点登录和单次登录SAML的支持添加到ASP.NET,ASP.NET MVC,ASP.NET Core,桌面和服务应用程序。轻量级库可帮助您使用单个凭据条目提供对云和Intranet网站的SSO访问。

Detailed UltimateSAML SSO review can be found here

答案 4 :(得分:1)

[免责声明:我是贡献者之一]

我们构建了一个非常简单的免费/开源组件,该组件添加了对ASP.NET应用https://github.com/jitbit/AspNetSaml的SAML支持

基本上,这只是一个简短的C#文件,您可以将其放入项目(或通过Nuget安装)并与您的应用程序一起使用