这是我的问题:
上下文:-Windows Server 2012 与 ActiveDirectory -Tomcat -Rest API (Spring)
我目前正在尝试限制 REST 请求。我希望只有特定的 AD 组才能访问特定资源。我仅限于 Kerberos 身份验证。
系统配置
- 在域“Tomcat”中创建用户
- setspn -a HTTP/apirest.domain@DOMAIN
- 使用 ktpass 生成一个 tomcat.keytab
API 休息配置
我正在使用 github 上的 spring 安全示例,您可以在此处找到:
我知道有一个入口点,这在我的上下文中不需要(API Rest)。我选择了这个示例,因为它似乎使用了 windows 身份验证上下文并使用它在 spring 安全上下文中自动对我进行身份验证。紧接着,发送一个 ldap 请求以提取有关登录用户的所有信息。就我而言,我需要提取组。
我也在使用:
https://github.com/GyllingSW/kerberos-demo
使用类“RoleStrippingLdapUserDetailsMapper.java”而不是“ActiveDirectoryLdapAuthoritiesPopulator”来提取用户的角色。此实现还提供 localhost 身份验证,但 NTLM 令牌的问题似乎在 spring security 的最后一次提交中得到修复。
我不确定这是否是做我想做的事情的正确方法。
我的身份验证似乎失败了,我的日志中只有一件事出错了..
“未设置属性 'userDn' - 匿名上下文将用于读写操作”
问题
- 我必须使用 tomcat 帐户运行我的 tomcat 服务吗?(似乎是,是的)
- 我是否使用 Kerberos 安全性做正确的事情?
- 如何摆脱匿名上下文?
- 匿名上下文似乎是在 Tomcat 启动后立即设置的。我想在我的用户(例如,user1)请求其余 API(EntryPoint 或其他)之后获取上下文
如果有不清楚的地方告诉我,我会尝试重新制定!
谢谢,