IE和WebService的Windows身份验证,用户名和密码的获取问题

Coder李海波 小米 研发工程师  2006-10-30 04:36:11
http://msdn2.microsoft.com/zh-cn/library/system.net.networkcredential.username.aspx
具体看上面的链接,我们的应用方式是,有asp.net,aspx页面嵌入Ocx控件调用WebService。
ocx控件里面调用WebSerivce时,遇到身份验证的问题,我查了一下,需要如下处理:
NetworkCredential credentials = new
NetworkCredential(UserName,SecurelyStroredPassword,Domain);

但是,UserName、SecurelyStoredPassword,从哪里来呢?
1、连接WebService的时候让用户输入,不太好,毕竟那些网页都可以访问,访问WebService还要输入一次,麻烦。
2、直接在客户端用配置文件写好,这样也好像不太好,更换用户或者密码修改会带来麻烦。
3、所有用户统一使用一个公共的用户名或者密码,这样也不好。
4、能获取得到IE的已经输入的用户名或者密码,怎么获取呢?
...全文
581 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlz_212 2006-11-07
可以将IIS设置成禁止匿名登陆,同时指定允许的domain。这样就可以retuest服务器端变量获得到客户端登陆的用户名和密码。
回复
yan63 2006-11-02
用域用户登陆Windows,然后登陆网站的时候,就不需要登陆用户了,

----------------------------------------------
如果是这样的话,那么你访问域里的webservice,该也不用登陆才对,但如果是页面上的js调用的话,可能还是需要NetworkCredential

如果一定要用windows的NetworkCredential的话,在Ocx代码中获取,当用户下载到本地运行的时候,它就具有完全的权限。其获取NetworkCredential的方法取决于ocx控件语言对应的库。
回复
Coder李海波 2006-11-02
登陆页面?哪里会有登陆页面呢,你用域用户登陆Windows,然后登陆网站的时候,就不需要登陆用户了。
回复
Coder李海波 2006-11-02
to yan63
你说的也许是一种思路,我这边的情况可能更加复杂,由ActiveX打开本地exe文件了,exe文件中需要访问WebService。
回复
DiamondJack 2006-11-01
cookie是个好办法
回复
Coder李海波 2006-10-31
在连接WebService的时候,就需要用户和密码,就谈不上通过WebService去获取Session了。
asp.net将通过验证的用户名和密码传给ActiveX控件,这也许是一个可行的方式。aspx的Js脚本或者服务器端C#代码中怎么获取用户名和密码呢?
回复
股神 2006-10-31
回复
yan63 2006-10-31
像是个单点登陆的解决方式,对于当前站点,javascript应该可以读取该站点cookie,在登录的页面获取用户信息后将验证串写入客户端cookie,然后某页面访问webservice的时候javascript取出验证串发送,再根据返回值处理页面跳转
javascript操作cookie的ref:
http://www.pconline.com.cn/pcedu/empolder/wz/javascript/0401/279440.html

cookie可能在某些客户端不受支持.
回复
蒋晟 2006-10-30
你可以将Asp.Net的Session保存到数据库,之后在输出包含ActiveX的页面时候将Session作为控件的参数,在WebService中到数据库去找Session来验证。
回复
发动态
发帖子
Web Services
创建于2007-09-28

1.2w+

社区成员

.NET技术 Web Services
申请成为版主
社区公告
暂无公告