在Silverlight/.NET Web应用程序上启用SSO:NTLM?

在Silverlight/.NET Web应用程序上启用SSO:NTLM?,.net,silverlight,active-directory,single-sign-on,ntlm,.net,Silverlight,Active Directory,Single Sign On,Ntlm,我使用Silverlight、.NET4(含VB)、RIA服务,并在VS2010下开发。 我正在尝试开发一个允许SSO(单点登录,即通过Windows用户名和Active Directory对应用程序进行自动身份验证)并使用表单身份验证(如果SSO失败,则针对DB登录)的应用程序,这就是我遇到的问题 我想做的是: 在应用程序启动时,通过使用RIA服务(相当于Web服务)调用服务器获取Windows用户名,然后返回通过HTTP请求找到的名称(HttpContext.Current.request.

我使用Silverlight、.NET4(含VB)、RIA服务,并在VS2010下开发。 我正在尝试开发一个允许SSO(单点登录,即通过Windows用户名和Active Directory对应用程序进行自动身份验证)并使用表单身份验证(如果SSO失败,则针对DB登录)的应用程序,这就是我遇到的问题

我想做的是:

  • 在应用程序启动时,通过使用RIA服务(相当于Web服务)调用服务器获取Windows用户名,然后返回通过HTTP请求找到的名称(
    HttpContext.Current.request.LogonUserIdentity.name
    )。为什么这么昂贵的电话?因为Windows用户名无法在客户端访问,其他堆栈溢出主题将向您显示

  • 然后尝试记录在Active Directory中找到的用户:此部分正常

  • 第1部分适用于本地(我确实有类似于“域\用户”的东西,但这是因为dev Web服务器在我的机器上运行),但是当应用程序部署到远程服务器上时,它就不再工作了(然后我就有了无法使用的“SERVICE NT \ NETWORK”)

    你知道我怎样才能解决这个大问题吗?以下是我的第一首曲目:

    • 设法在客户端获取用户名(但据我所知,这将是一个奇迹;即使在默认的ASP.NET页面上使用javascript,我也无法做到)
    • 使用NTLM.NET身份验证机制
    • 配置IIS或使用的服务器(Windows server 2008),以便我在服务器端收到一个良好的“域\用户”(可能通过信任设置…?)
    • 使用Windows身份验证,但我如何根据DB验证用户

    谢谢你的帮助,这让我快发疯了。。。此外,这也变得越来越紧迫:-(

    嗯,我找到的唯一方法是通过javascript和ActiveX控件获取用户:

    var wshshell = new ActiveXObject("wscript.shell");
    var username = "UserID=" + wshshell.ExpandEnvironmentStrings("%username%");
    
    当然,这会引起部署问题,因为:

    • 您的所有用户都必须使用,即
    • 他们必须设置允许ActiveX的参数

    我很幸运,因为第1点被特别提到,第2点我使用了一个
    .reg
    文件在所有计算机上执行。

    我不明白:SSO和Forms AuthN。对我来说,SSO意味着我登录Windows,不必登录其他任何东西。你能详细说明一下吗?是的,我的客户想要他的身份验证的方式非常复杂-他ants首先访问数据库,以获取触发身份验证类型的标志,即Active Directory或DB。