我有一个 Java 程序(运行在 Windows 7 虚拟机上),它使用 JAAS 和 GSSAPI 从 IIS(运行在 Windows 2012 R2 虚拟机上)获取资源(如 index.html 等)
它使用 Kerberos 通过 Active Directory 域控制器(在第二个 Windows 2012 R2 虚拟机上)进行身份验证。
所有虚拟机都位于同一个域中,并使用域控制器作为其 DNS。
有三个活动目录用户:
- 管理员(显然是默认管理员)
- testuser(域用户)
- testuser2(另一个域用户)
据我所知,testuser 和 testuser2 是相同的(尽管可能存在一些我没有注意到的不同)。
使用该程序,我可以以上述所有三个用户的身份登录(即有身份验证请求/响应,看起来像是正确登录 - 错误的密码导致登录失败等)。但是,当我尝试获取资源时,只有管理员和 testuser2 能够获取它。但是,testuser 收到此响应:
HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/8.5
WWW-Authenticate: Negotiate
Date: Tue, 03 Jan 2017 06:14:15 GMT
Content-Length: 58
You do not have permission to view this directory or page.
正如我所说,两个测试用户之间似乎没有区别。
此外,当我在 Google Chrome 中导航到 IIS 的位置时,我可以以所有三个用户的身份登录并查看资源(据我从网络跟踪中了解,它使用 kerberos 进行身份验证)。
我真的迷路了。提前谢谢 :)
答案1
这实际上并不能解释哪里出了问题,但是当我们删除 testuser 并像以前一样重新创建它时,它就正常工作了。我只能假设它一定没有 testuser2 拥有的某些权限(testuser 更老,而且从很早以前就在那里,所以也许我们做了一些改变)。