受到大家影响,也开始关注MS的KB了
今天下午调试一段程序时,一个问题不得其解:
在域中一台服务器(非域控器)上运行的ASP.NET代码取域中的AD信息时出错,而这段代码在域控器上运行正常,于是怀疑应该是权限认证问题,但又无从着手,于是想到了KB...
打开http://support.microsoft.com站点,把代码错误信息输入进去,搜索,呵呵,马上找到一篇相关的文章,正好是描述在ASP.NET代码中访问AD信息的,问题解决。
原来,运行在非域控器上的ASP.NET代码为了能够获取AD中的所有信息,必须将一个有相应权限的“主令牌”传递给AD,而如果IIS上使用的“Windows集成认证”,那么用户的密码将被Hash加密,这个加密的密码是不能被IIS传递给AD的,而如果使用“Basic认证”,因为这时密码并未被加密(所以微软推荐我们Basic认证需要和SSL配合使用),所以可以被IIS用来生成一个传递给AD的令牌,于是就可以获得所需的信息了。