首页 新闻 会员 周边

ASP.NET 使用Windows身份验证 怎么获取登陆用户的密码?

0
悬赏园豆:20 [待解决问题]

我现在想在web程序中发送邮件(或类似需要域验证的功能),其中Credentials我想使用当前登陆用户的。
请问在这个时候怎么获取密码或有什么别的方式处理?

炎髪灼眼の讨ち手的主页 炎髪灼眼の讨ち手 | 初学一级 | 园豆:182
提问于:2014-11-22 19:29
< >
分享
所有回答(2)
0

获取用户的密码,这个肯定你就别想了,这是不道德的。

至于你想用当前登录用户发邮件,估计你是用Domain Controller + Exchange Server吧?

提示一下:Google IIdentity IPrincipal.

 推荐一篇CodeProject文章

Understanding Windows Identity Foundation (WIF) 4.5

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-11-22 20:36

邮件只是举例,我的表达可能不是特别清楚,IIdentity IPrincipal这些我都理解。

我现在为公司开发了一个WEB程序,我们公司有自己的邮件服务器和域服务器,现在我要发邮件,那么就要通过域验证。变通来说可以通过一个特定的用户进行域验证,但是如果涉及到请求一些Windows资源(邮件中的附件),需要按权限控制的对像(例如TFS),那么这个特定用户就明显不合适了,因此需要当前访问web站点的这个用户的ICredential。

请问这时怎么获取or创建ICredential的实例呢?

支持(0) 反对(0) 炎髪灼眼の讨ち手 | 园豆:182 (初学一级) | 2014-11-22 21:04

@炎髪灼眼の讨ち手: 

Controller in MVC has a property User which is IPrincipal.

http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.user%28v=vs.108%29.aspx

IPrincipal has an Identity property

http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal.identity%28v=vs.110%29.aspx

which is of type IIdentity

http://msdn.microsoft.com/en-us/library/system.security.principal.iidentity%28v=vs.110%29.aspx

If you're using Windows Authentication the actual instance will be of type WindowsIdentity

http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity%28v=vs.110%29.aspx

Hopefully it will contain all the credential information you need.

Also, you might want to try:

Uri uri = new Uri("http://tempuri.org/"); 
ICredentials credentials = CredentialCache.DefaultNetworkCredentials;
NetworkCredential credential = credentials.GetCredential(uri, "Basic");
支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-11-22 21:08
0

如果要获取密码,需要拿域用户名去域服务器上查询。

上帝之城 | 园豆:2549 (老鸟四级) | 2014-11-24 13:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册