我执行以下步骤从浏览器获取安全 token 以进行单点登录身份验证。
我能够从http header 找到 token 。我的问题是: a) 如何使用 Active Directory 验证此 token ? b) 如何从此 token 中找到用户名?
在谷歌搜索时,似乎 Java API 有 Kerberos5 登录模块来完成我所期望的事情。但几乎所有页面都缺少简单的示例。
- Web 客户端通过 GET 请求访问 AS Java 资源。
- AS Java 发回 401 响应代码(未经授权),并请求通过将 HTTP header “WWW-Authenticate”设置为“Negotiate”来启动 SPNego 身份验证。
- Web 客户端认识到 AS Java 主机是 Kerberos 领域的成员,并从 KDC 获取 AS Java 的 Kerberos 客户端/服务器 session 票证。
- 然后,Web 客户端将 Kerberos 客户端/服务器 session 票证发送到封装为 HTTP 授权 header 中 SPNego token 的 AS Java。
- SPNegoLoginModule 从 HTTP 请求中读取 token ,并将其提供给 JDK 的 Kerberos 实现。
- 结果是客户端身份验证成功,或者当客户端请求被拒绝或需要再次往返 KDC 时失败。如果发生故障,AS Java 的 Kerberos JDK 实现会生成输出 token 并将其发送回 Web 客户端。输出 token 包装为 SPNego token 并在 HTTP 授权 header 中发送。
如有任何帮助,我们将不胜感激。
最佳答案
长时间没有回复。我自己从互联网上的各个网站找到了答案。 在下面的链接中记录了我的经验: http://webmoli.com/2009/08/29/single-sign-on-in-java-platform/
关于java - 来 self 的自定义 servlet 的 Kerberos 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956657/