C#ASP.NET单一登录实现


77

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

  1. 用户使用学校提供给他/她的学生ID /密码登录到学校的主门户系统。
  2. 用户单击指向我公司产品的链接。
  3. 用户将被自动带到仪表板页面,就像他们刚刚通过我们网站上的登录表单登录一样。

因此,可以通过两种机制对用户进行身份验证到我们的网站中:

  1. 进入产品主页,并使用存储在本地系统中的电子邮件/密码登录。
  2. 在学生已经使用学生ID和密码登录到学校主系统的情况下,使用单点登录。

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


如果它是Identifier Provider发起的模型,那么本文可能会有所帮助:IdP发起的asp.net Web应用程序
Peter

Answers:


55

为.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窗体,而第二个使用ASP.NET MVC4。

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

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

希望这可以帮助!


1
谢谢您的帮助!我想知道,是否已经不存在可用于执行此操作而不是编写自己的实现的单点登录服务器?像耶鲁大学的CAS还是其他?
亚当·莱维特

3
也许我缺少了一些东西,但是第一个链接似乎毫无用处。您可以破解查询字符串以绕过身份验证吗?
JohnOpincar 2015年

1
@JohnOpincar那也是我的想法..对我来说似乎不太安全?
汤姆·米勒

1
我在想同样的事情。绝对不是SSO的工作方式!
user441521

1
第一个链接很粗糙。对于初学者来说,无论他说“实时”在何处,都应将其替换为“现实世界”。最后,他暗示应该使用SAML令牌替换查询字符串中的魔术“ IsAuthenticatedBySSO”,这将在后续文章中进行介绍。不幸的是(?),该用户的帐户已被关闭,因为他“在辱骂或是巨魔”。
尼克·韦斯特盖特,2016年

14

我参加聚会很晚,但是对于选项1,我会选择 IdentityServer3(.NET 4.6或更低版本)或IdentityServer4 (与Core兼容))。

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


11

开箱即用的有多个身份提供者,还有第三方**产品。

**第三方产品的唯一问题是按用户/月收费,而且价格可能非常昂贵。

.NET的可用API附带的一些工具包括:

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

  • C#

    • IdentityServer3(OAuth / OpenID协议,OWIN / Katana
    • IdentityServer4(OAuth / OpenID协议,ASP.NET Core
    • Okta的OAuth 2.0
  • Java脚本

    • 护照-openidconnect(node.js)
    • oidc-provider(node.js)
    • openid-client(node.js)
  • 蟒蛇

    • pyoidc
    • Django OIDC提供程序

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


3

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

可以在这里找到详细的UltimateSAML SSO评论


1

[免责声明:我是撰稿人之一]

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.