经过多次失败,今天终于配通了kerberos。为使后来者不继续我的弯路,就把主要过程记录一下。 其中有些结论仅是我目前安装过程中的一些感觉,并不做准。
我们这次配置的目的是实现客户端不要输入用户名密码直接登陆sharepoint2007,而且为了和另外一套系统共享认证信息,所以使用了一个单独的DC。其中我的spserver(shaerpoint server)已经加入了这个个域emcdc.local, spserver 全名是mospfordev.emcdc.local.
1. 首先重要的是在你安装sp2007的时候,该机器应该已经加入了域,原因是因为如果spserver和客户端不在同一个域的时候,会默认采用NTLM方式访问。
2. 一旦你配置成功后,使用DC中用户登陆后,会报访问被拒绝的错误,此时你只需要在站点的用户管理中将相应用户权限分配即可。
3. 由于kerberos认证跟时间有很大关系,所以得保证客户端和服务器时间一致,可以通过下边这个命令来同步。 在命令行打入“net time \\server /set /y”
如果报访问被拒绝的错误,可以执行这个命令 net use \\server password /user:domain\username
4.记得要修改准备kerberos认证site的Application pool中的账户,修改成一个域账户,并赋予相应的权限。并给该用户添加SPN,SPN一定不能重复。
5.application pool的账户应该被添加进IIS_WPG and STS_WPG WSS_WPG这几个组。
配置步骤如下:
1. 在DC上安装Windows Support Tools。
2. 然后安装下图操作:
重要: 此处选择你的site对应的Application pool中的用户名。
然后输入
HTTP/mospfordev.emcdc.local:8001
我加这句的意思是指定了该用户可以访问http://mospfordev:8001
重要:切记,一旦有一个用户被指定了这个SPN后,别的用户就一定不可以添加这个SPN了,否则会kerberos认证失败。
我们继续在DC上做操作。
在刚才配置的那个用户上点Properties.
如果此时你的域控选的是2003那么看到的是下边这个界面。
至于是2003还是2000,可以通过Ad and trust - > raise function level来修改。
4. 接着还有一些操作我没图,反正也挺简单。
Administrative Tools-> Active Directory Users and Computers-> Computers
选择mospfordev(你的site所在的机器), click Properties.
Click the Delegation tab, click Trust this computer for delegation to any service (Kerberos only), and then click OK.
5. 接着我们打开spServer,使用Central Administration修改准备改变认证方式的site的认证方式为kerberos认证。
此时你就应该可以使用刚才配置的用户登录spserver了,也许会报没有权限访问的错误,但没有关系。只要你在系统日志看到下图就说明你已经配置成功了。
通过试验我发现如果客户机跟webserver不在通一个域,默认会使用NTLM认证方式。 (正确的说法应该是:你的webserver应该在域里边,而客户机好像不在这个域也可以)
此时,有可能打开网站时会提示你输入用户名密码,因为我们已经使用用户名密码登录了该电脑,所以没必要再次重新输入,按下边的操作:
在客户端打开网站后.选择"文件"-->"将此站点加入到"-->"本地Intranet区域".
在"安全性设定"中找到"使用者验证",选择"只在Intranet区域自动登录"。
后记:如果你使用win2008+IIS7,你会发现上边的操作并不能成功,解决方法很简单。
在 IIS 7 Manager中选择 select the “Sites/”并选择“Authentication”。
选择“Windows Authentication”并点击“Advanced Settings”
去掉勾选“Enable kernel-mode authentication”