C#ASP.NET单点登录实现

Ada*_*itt 68 c# asp.net single-sign-on

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

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

因此,有两种机制可以将用户身份验证到我们的站点:

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

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

小智 54

有多种方法可以为.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应用程序集成.

希望这可以帮助!

  • 也许我错过了一些东西,但第一个链接似乎相当无用.您可以破解查询字符串以绕过身份验证吗? (2认同)

Evd*_*afa 10

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

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


Ale*_*lex 8

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

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

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

  • @MalikKhalil 不客气!是的,我自己也经历过同样的困惑,这就是我写这个库的原因。 (3认同)
  • 非常感谢,伙计。经过 7 天的讨论,在整个网络上,这是我找到的最简单的解决方案。再次感谢。 (2认同)
  • 最好的事情是它让您了解 SAML 实际如何工作的最基本的想法。非常感谢您提供最简单的源代码! (2认同)

Ale*_*x.H 7

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

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

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

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

  • C#

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

    • passport-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协议.