RESTAPI(Tomcat)的Spring安全Kerberos SSO
我的问题是: 上下文: -使用ActiveDirectory的Windows Server 2012 -雄猫 -RESTAPI(春季) 我目前正试图限制REST请求。我希望只有特定的广告组才能访问特定的资源。我仅限于Kerberos身份验证 系统配置RESTAPI(Tomcat)的Spring安全Kerberos SSO,spring,rest,tomcat,kerberos,spring-security-kerberos,Spring,Rest,Tomcat,Kerberos,Spring Security Kerberos,我的问题是: 上下文: -使用ActiveDirectory的Windows Server 2012 -雄猫 -RESTAPI(春季) 我目前正试图限制REST请求。我希望只有特定的广告组才能访问特定的资源。我仅限于Kerberos身份验证 系统配置 在域“Tomcat”中创建用户 setspn-一个HTTP/apirest。domain@DOMAIN 使用ktpass生成tomcat.keytab API rest配置 我使用的是github上的spring安全示例,您可以在这里找到: 我知
谢谢,您不需要查询LDAP来获取有关用户所属组的信息。Active Directory已经将此信息添加到从浏览器发送到Tomcat的Kerberos票证中 您只需要从令牌中提取这些信息,例如使用library。它是受project启发的Spring集成,所以切换到它应该很容易
如果仍要查询LDAP,则需要在LDAP中进行身份验证,然后才能进行任何查询。同样,也不需要使用最终用户帐户-您可以使用“Tomcat”帐户使用keytab文件和查询组。我找到了解决问题的方法 在RESTAPI上下文中,没有入口点。我试图将我的入口点设置为一个未映射的URL,只是为了进行协商。通过这样做,您将收到一个HTTP响应,错误代码为404(未找到),但正确的头是由spring security(WWW Authenticate)添加的 如果错误代码不是401,web浏览器将不发送票证服务 要解决此问题,您必须创建一个CustomEntryPoint类(实现AuthenticationEntryPoint),并且您需要重写“开始”方法以返回具有正确头的401 HTTP代码
我希望这能有所帮助。如果有更好的办法,让我知道 请避免同时问多个不同的问题。请参阅页面以获取澄清此问题的帮助。谢谢,我下次会记住它。谢谢您的回答,我将尝试使用LDAP查询解决方案,以避免导入更多依赖项。奇怪的是,我们无法使用spring security(使用本机库)从用户令牌中提取组。@csik基于对github的承诺spring security kerberos的主动开发在3年前停止,因此它没有很多kerberos功能。不过,使用tomcat kerberos帐户查询LDAP应该可以工作