为Web应用程序实现单点登录解决方案?

时间:2010-02-23 20:27:10

标签: .net windows linux web-services

我想测试为我的大学(目前是学生员工)运行单点登录网络身份验证,我一直在阅读其他大学使用的WebAuth。虽然我认为解决方案很棒,但我们是一个非常'小时'的大学,但是当前的登录系统和身份验证对于用户体验(每个服务的登录)来说都很糟糕,并且会从这样的系统中大大受益。

在我使用我的解决方案进入IT之前,我想尽可能多地研究和学习,并找出一些安全问题。目前我是唯一的php开发人员,并且正在转换到.NET,理想情况下,我希望有两种系统进行身份验证。

如上所述,我已经阅读了很多内容,但是并没有真正拥有“网络管理员”背景来了解其中一些部分是如何组合在一起的,我在哪里/如何开始构建测试系统?

5 个答案:

答案 0 :(得分:1)

SSO挑战的新兴解决方案是基于开放标准基于声明的身份

在.NET平台上,Microsoft现在提供Windows Identity Foundation(WIF),它为使用这些协议启用(Web)应用程序提供构建块。

我不知道其他平台上有哪些框架可用,但重要的是要记住WIF只是微软对这些开放标准的实现,所以(理论上至少)它也应该与其他平台一起使用。

答案 1 :(得分:0)

如果您来自美国大学,我会调查Shibboleth,这是许多学校使用的标准SSO认证提供者。

它还可以作为一种机制来验证其他非学校网站上的用户实际上是学生。例如,Microsoft使用此功能来验证学生状态,然后让学生免费下载DreamSpark上的软件。

答案 2 :(得分:0)

所有单点登录系统的祖父都是Kerberos--它是在20世纪80年代在麻省理工学院开发的。对于简单的Web单点登录来说可能有点过分,但它是全面的并且受到每个操作系统的支持。

http://www.kerberos.org/

答案 3 :(得分:0)

查看LDAP? 类似的东西:

using System.DirectoryServices;

private bool AuthenticateUser(string username, string password)
    {
        String strLdap = "LDAP://YOURACTIVEDIRECTORYSERVER/CN=" + username + ",OU=" + username[0];
        user = new DirectoryEntry(strLdap, username, password, AuthenticationTypes.Secure | AuthenticationTypes.Encryption);
        try
        {
            // Bind to the native AdsObject to force authentication.
            Object obj = user.NativeObject; // Will throw an exception if not authenticated
            return true; // User is authenticated
        }
        catch
        {
            return false; // User is not authenticated            
        }
    }

答案 4 :(得分:0)