首页 文章

获取ASP网站的经过身份验证的用户的ICredentials对象

提问于
浏览
3

我正在尝试向现有的ASP.net网站添加一项功能,该网站需要从Exchange Web服务中提取用户日历数据 . 我知道这是可能的,并且本地测试作为概念证明运行,但我在ASP网站的上下文中遇到了一些问题 .

我的目的是通过使用ASP站点凭据的当前用户构建WebCredentials类的实例来覆盖默认凭据,然后使用它来创建Exchange服务绑定 .

Example

ExchangeService service = new ExchangeService(ExchnageVersion.2007);
service.AutoDetect(emailAddress);
service.Credentials = new WebCredentials(credentials);

遗憾的是,WebCredentials对象只能由包含用户名,密码和域的一组字符串构成,或者通过传入ICredentials对象构建 .

那么,问题是,在经过Forms身份验证的网站中,有没有办法为当前经过身份验证的用户获取ICredentials对象?

1 回答

  • 3

    没有表单身份验证使用定制的加密cookie,浏览器会根据每个请求发送该cookie . 它让ASP.NET知道用户已经过身份验证以及他们是谁 . 它不是设计用于外部系统,实际上它要求服务器上的machinekey能够解密细节 . 将表单凭据传递到另一台服务器将毫无意义 .

    此系统与Windows身份验证不同,Windows身份验证可以使用各种身份验证方案(如基本,摘要,NTLM和Kerberos身份验证)来协商凭据,作为HTTP协议的一部分,并且可以由同一Exchange上的外部系统理解 .

    因此,要使用ICredentials,您需要在ASP.Net应用程序中使用Windows身份验证,或者可以访问用户名/密码,以便可以显式使用NetworkCrententials .

相关问题