本以为很简单。

 

事情是这样的。

项目需要用户使用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

 

 

 

posted on 2008-11-26 15:32  杨发达  阅读(444)  评论(0编辑  收藏  举报