iis asp.net window 认证中的问题。

本以为很简单。

事情是这样的。

项目需要用户使用ad 登录web 系统, 查询数据库信息和产生report 。 这个数据库不是和website 同一台机器 , 因为是中央服务器, 必须使用ad 登录(大部分用户实际上是不能登录的 )。

我很快开发这个系统并且setup 。

website 的config 设定为

<identity impersonate="true" />

<authentication mode="Windows"></authentication>

site 去掉匿名登录 ,使用集成window 登录。

结果发现不能登录sqlserver ( 确定这个用户有权限登录) , 出现错误是 使用 network service不能登录 sqlserver 。

晕 , impersonate="true" 情况下, 基本认证在iis6 应该是 可以传递网络凭证的呀。 也就是 request 的信息也应该会传递给sqlserver 才对。

google 了一下, 发现可能是 集成验证的协议问题。 用的实际上是 ntlm ,不是Kerberos 协议( 我代码测试看到是 Negotiate) 。 后面搞不懂了。

只好使用basic 认证了, 这个是没有问题的。( 又有安全问题, 明码呀)

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/523ae943-5e6a-4200-9103-9808baa00157.mspx?mfr=true

http://www.derkeiler.com/Newsgroups/microsoft.public.inetserver.iis.security/2004-07/0156.html