C#ASP.NET单一login实现

我负责为我们的客户实施单点login,作为我们下一个版本的一部分。 stream程如下所示:

  1. 用户使用学校提供的学生ID /密码login学校的主要门户系统。
  2. 用户点击链接到我公司的产品。
  3. 用户会自动进入仪表板页面,就像他们刚刚通过我们网站上的login表单login一样。

因此,用户可以通过两种机制authentication到我们的网站:

  1. 来到我们的产品主页,并使用我们在本地系统中存储的电子邮件/密码login。
  2. 使用学生已经使用学号和密码login学校主系统的单点login。

如果我们的产品的实现是在ASP.NET中(而不是Java / Ruby),我们应该使用CAS,JOSSO还是其他第三方单点login产品? 还是有一些可用于.NET环境的东西,对于.NET公司来说我们会更简单一些?

有多个选项可以为.NET应用程序实现SSO。

在线查看以下教程:

单点login基础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窗体,而第二个使用ASP.NET MVC4。

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

有关更多信息,请阅读MSDN博客文章使用Universal Providers将OpenAuth / OpenID与现有的ASP.NET应用程序集成 。

希望这可以帮助!

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

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

有几个身份提供商开箱即用SSO支持,也是第三方**产品。

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

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

  • IdentityServer的IdentityExpress (带有pipe理界面)
  • Centrify身份服务
  • Okta身份(SAML 2.0)
  • OneLogin

如果您决定采用自己的实现方式,那么可以使用下面通过编程语言分类的框架。

  • C#

    • IdentityServer3(OAuth / OpenID协议, OWIN / Katana
    • IdentityServer4(OAuth / OpenID协议, ASP.NET Core
    • Okta的OAuth 2.0
  • 使用Javascript

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

    • pyoidc
    • Django OIDC提供程序

我将使用IdentityServer4和ASP.NET Core应用程序,它很容易configuration,您也可以添加自己的身份validation提供程序。 它使用比SAML 2.0和WS-Federation更新的OAuth / OpenID协议。