C#ASP.NET单一login实现
我负责为我们的客户实施单点login,作为我们下一个版本的一部分。 stream程如下所示:
- 用户使用学校提供的学生ID /密码login学校的主要门户系统。
- 用户点击链接到我公司的产品。
- 用户会自动进入仪表板页面,就像他们刚刚通过我们网站上的login表单login一样。
因此,用户可以通过两种机制authentication到我们的网站:
- 来到我们的产品主页,并使用我们在本地系统中存储的电子邮件/密码login。
- 使用学生已经使用学号和密码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协议。