gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:11:28 26 4
gpt4 key购买 nike

我使用 Silverlight、.NET 4(带 VB)、RIA 服务,并在 VS 2010 下进行开发。我正在尝试开发一个允许 SSO(单点登录,即通过 Windows 用户名和 Active Directory 对应用程序进行自动身份验证)并使用 Forms 身份验证(如果 SSO 失败则登录数据库)的应用程序,这就是我有问题。

我尝试做的是:

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

  2. 然后尝试根据 Active Directory 记录找到的用户:这部分没问题。

第 1 部分在本地工作(我确实有类似“DOMAIN\USER”的东西,但这是因为开发 Web 服务器在我的机器上运行),但是当应用程序部署在远程服务器上时它不再工作(我然后有我不能使用的“SERVICE NT\NETWORK”)。

你知道我怎样才能摆脱这个大问题吗?这是我的第一首轨道:

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

谢谢你的帮助,这让我发疯了......而且这也变得很紧急:-(

最佳答案

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

var wshshell = new ActiveXObject("wscript.shell");
var username = "UserID=" + wshshell.ExpandEnvironmentStrings("%username%");

当然这会引发部署问题,因为:

  • 您的所有用户都必须使用 I.E。
  • 他们必须设置 I.E.允许 ActiveX 的参数

我很幸运,因为特别提到了第 1 点,对于第 2 点,我使用了一个 .reg 文件在所有计算机上执行,couldn't find better .

关于.net - 在 Silverlight/.NET Web 应用程序上启用 SSO : NTLM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5404724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com