让我先说一下,我已经在这个问题上讨论了大约一个半星期了,而且我无法弄清楚。 我觉得我很接近,但是每次我想到目前为止,我错了。 我看过每一个论坛post,我可以想到search,没有任何工作。
我只是试图让我的Web应用程序及其各自的服务使用Windows身份validation,以便在代码中,我可以拉取当前login的用户的凭据,而不会提示他们,并通过我的服务传递给我的数据库存储过程。
听起来很简单吧?
错误!
随着WireShark的运行,我不断收到KRB_ERROR(30)的回应,详情如下:
error_code:KRB5KRB_AP_ERR_MODIFIED(41)
明天我会试试这个 ,但是我想现在就发布信息,以防有人知道为什么我不断收到KRB5KRB_AP_ERR_MODIFIED错误, 这个错误是基于我将在下面列出的当前设置。
这是我目前的设置:
Windows Server 2008 R2标准SP1 64位4.00 GB RAM 。
为了这篇文章,我们将调用这个服务器DALDEP01.TEST.LOCAL ,并在其上,我有以下几点:
MS SQL Server 2008 R2有一个数据库,我们将调用Deploy 。
只有一个用户帐户可以访问部署数据库TEST \ DeploySvc 。
这个用户帐户是一个datareader / datawriter并已被授予EXEC 。
承载2个网站的IIS 7.5 :
对Deploy数据库进行CRUD操作的Deploy.Service 。
承载调用Deploy.Service的Silverlight 4应用程序的Deploy.Web 。
这两个网站configuration相同(因为我不知道该怎么办) :
他们使用在自定义用户帐户TEST \ DeploySvc下运行的DeployAppPool 。
匿名身份validation已禁用 。
Windows身份validation已启用
扩展保护是接受 。
启用内核模式authentication是检查 。
提供商只是协商 , 因为我只想要Kerberos,所以我删除了NTLM 。
SPNconfiguration如下:
C:\> setspn -l deploysvc
注册的ServicePrincipalNames为CN = DeploySvc,OU =服务帐户,DC =testing,DC =本地:
HTTP / deploy.test.local
HTTP /部署
重复的SPN可能导致此问题…
setspn -X
…会告诉你,如果有任何重复的域名,你将需要删除有问题的。 或者你可以使用SPN查询工具 。 我还假设你已经在AD中修改了服务帐户的代理选项卡,这样就可以信任委派了?
我最近有同样的问题。
原来是SPN相关的。 SPN已映射到SQL Server的计算机帐户,而不是映射到运行SQL Server的服务帐户。
我们删除并重新创build了映射到在主机上运行SQL Server 2012 R2的服务帐户的SPN,所有内容都是肉汁。