C#ASP.NET单点登录实现

C#ASP.NET单点登录实现,c#,asp.net,single-sign-on,C#,Asp.net,Single Sign On,作为下一版本的一部分,我的任务是为我们的客户实施单点登录。流程存在如下所示: 用户使用学校提供的学生id/密码登录学校的主门户系统 用户单击指向我公司产品的链接 用户会自动进入仪表板页面,就好像他们刚刚通过我们网站上的登录表单登录一样 因此,有两种机制可以让用户通过身份验证进入我们的站点: 访问我们产品的主页,并使用我们存储在本地系统中的电子邮件/密码登录 在学生已使用学生id和密码登录学校主系统的情况下使用单一登录 如果我们的产品是在ASP.NET中实现的(与Java/Ruby相反),那么我们

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

  • 用户使用学校提供的学生id/密码登录学校的主门户系统
  • 用户单击指向我公司产品的链接
  • 用户会自动进入仪表板页面,就好像他们刚刚通过我们网站上的登录表单登录一样
  • 因此,有两种机制可以让用户通过身份验证进入我们的站点:

  • 访问我们产品的主页,并使用我们存储在本地系统中的电子邮件/密码登录
  • 在学生已使用学生id和密码登录学校主系统的情况下使用单一登录

  • 如果我们的产品是在ASP.NET中实现的(与Java/Ruby相反),那么我们应该使用CAS、JOSSO还是其他第三方单点登录产品?或者,对于.NET公司来说,.NET环境是否有更简单的功能?

    对于.NET应用程序,有多种选项可以实现SSO

    在线查看以下教程:

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

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

    第一个使用ASP.NET Web表单,而第二个使用ASP.NET MVC4

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

    有关更多信息,请阅读MSDN博客文章


    希望这有帮助

    我参加聚会迟到了,但如果没有第1种选择,我会和你一起去 (.NET 4.6或以下)或(与兼容)


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

    有多个具有现成SSO支持的身份提供商,还有第三方**产品

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

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

    • (使用管理UI)通过IdentityServer
    如果您决定使用自己的实现,可以使用下面按编程语言分类的框架

    • C#

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

      • passport openidconnect(node.js)
      • oidc提供程序(node.js)
      • openid客户端(node.js)
    • 蟒蛇

      • 化脓性
      • Django OIDC提供程序
    我会使用IdentityServer4和ASP.NET核心应用程序,它很容易配置,您也可以添加自己的身份验证提供程序。它使用比SAML2.0和WS-Federation更新的OAuth/OpenID协议


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


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

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


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

    谢谢您的帮助!但是我想知道,是否已经有了预先存在的单点登录服务器,我可以用它来完成这项工作,而不是编写自己的实现?像耶鲁大学的CAS之类的?也许我遗漏了什么,但第一个链接似乎毫无用处。你可以直接破解查询字符串以绕过身份验证?@johnopeinto这也是我的想法。。对我来说不是很安全吗?我也这么想。不可能,SSO应该是这样工作的!第一个环节相当粗糙。首先,只要他说“实时”,就用“真实世界”取代它。最后,他暗示查询字符串中神奇的“IsAuthenticatedBySSO”应该用SAML标记替换,这将在后续文章中描述。不幸的是(?)该用户的帐户被关闭,因为他“滥用或是一个恶棍”。如果这是标识符提供者发起的模型,本文可能会有所帮助: