我使用Silverlight,.NET 4(带VB),RIA服务,我在VS 2010下开发。 我正在尝试开发一个允许SSO(单点登录,即通过Windows用户名和Active Directory对应用程序进行自动身份验证)的应用程序,并使用Forms身份验证(如果SSO失败则记录数据库),这就是我有问题。
我试图做的是:
在应用程序启动时,通过使用RIA服务(相当于Web服务)调用服务器获取Windows用户名,然后返回通过HTTP请求找到的名称(HttpContext.Current.Request.LogonUserIdentity.Name
) 。为什么这么贵的电话?因为Windows用户名无法在客户端访问,因为其他堆栈溢出主题将显示给您...
然后尝试记录针对Active Directory找到的用户:这部分没问题。
第1部分适用于本地(我确实有类似“DOMAIN \ USER”的东西,但这是因为dev Web服务器在我的机器上运行),但是当应用程序部署在远程服务器上时它不再有效(I然后有“服务NT \网络”,我不能使用)。
你知道如何摆脱这个大问题吗?这是我的第一首曲目:
感谢您的帮助,这让我感到疯狂......此外,这也变得非常紧迫: - (
答案 0 :(得分:0)
嗯,我发现的唯一方法是通过javascript和ActiveX控件获取用户:
var wshshell = new ActiveXObject("wscript.shell");
var username = "UserID=" + wshshell.ExpandEnvironmentStrings("%username%");
当然,这会引发部署问题,因为:
我很幸运,因为第1点被特别提及,对于第2点,我使用.reg
文件在所有计算机上执行,couldn't find better。