日期:2014-05-18  浏览次数:20424 次

请教域用户直接登录ASP.NET程序(单点登录)
请教下大家,域用户直接登录ASP.NET程序该怎么做?(听说是单点登录)

正常我们登录ASP.NET系统是,在登陆页,填写用户名、密码,登陆后,生成用户Session。
关于域用户登录,我的思路是获取当前登录客户端Windwos系统的用户的“用户名”、“域名”,然后和我系统里配置的域名相匹配;如果是同一个域名,再根据用户名(此用户名可能与ASP.NET系统的登录用户名不同,但是用户表里有关联关系),生成一个用户Session,后面就和正常的用户名密码登录后使用,一样了。

现在我的问题是我获取不到登录客户端的Windows系统的用户的用户名和域名。找了几个法子,都是获取到服务器端的,比如
//当前电脑用户
string name = System.Environment.UserName;
//当前电脑所属网域
string DomainNanme = System.Environment.UserDomainName;


我想问下大家,我这个法子是否可行,如果可行,该如何获取客户端的用户名和域名;
或者你们有知道其他的法子让域用户直接登录ASP.NET的,能告诉我下,谢谢。

------解决方案--------------------
最近我也在看这个我这有例子,你要的话我把例子给你一份
------解决方案--------------------
查看域结构需有user的权限,使用User.Identity.Name只能获得当前系统登录名,并不能获得登录密码,所以得需要一个user账户以通过域验证,这样才有查询域内结构的权限。其次除了获取User.Identity.Name中的登陆名,还必须使用DirectoryServices这个类从中查询登陆计算机账户的相关信息,例如显示名称、所在的ou等。
------解决方案--------------------
通过string name=Page.Request.UserHostName;
string address = Page.Request.UserHostAddress;
可以获取客户端计算机名和IP地址,不过如何获取域名就不清楚了,要是有方法的话可以贴出来共享
------解决方案--------------------
首先要设置IIS为集成Windows验证,在web.config也要配置:在authorization里面加上<deny users="?"/>
string []strUserInfo = User.Identity.Name.Split('\\');
string LoginID = strUserInfo[strUserInfo.Length - 1]; // 获得用户的登录名
------解决方案--------------------
http://hi.baidu.com/isbx/blog/item/34ff908f1446c9f3503d92d5.html asp.net 单用户登录