我们正在使用Grails框架构建Restful服务,并使用Spring Security插件为其提供安全性。当您想要使用自定义授权标头进行身份验证时,我想与您联系,了解最佳方法。有关此方法的更多信息,请参阅此处 Custom HTTP Authorization Header
在我的情况下,客户端ID和密码存储在Ldap中,头部附带SHA1加密。使用Spring Security实现此目的的最佳方法是什么?
我也在Grails邮件列表中提出了同样的问题。
任何见解都会有所帮助。谢谢。
〜ABHI
答案 0 :(得分:9)
您必须实现自己的过滤器,身份验证提供程序和身份验证令牌(将数据传递给您的提供程序)。
请参阅:
答案 1 :(得分:0)
列出项目
如果您使用的是基本授权标头,则以下配置适用于context-security.xml文件。
< http auto-config="true" use-expressions="true" pattern="/project/api/**">
< intercept-url pattern="/**" access="isFullyAuthenticated()" requires-channel="${security.requires.channel}" method="POST"/>
< custom-filter ref="basicAuthenticationFilter" position="PRE_AUTH_FILTER"/>
< /http>
< beans:bean id="basicAuthenticationFilter" class="org.springframework.security.web.authentication.www.BasicAuthenticationFilter">
< beans:property name="authenticationManager" ref="authenticationManager" />
< beans:property name="authenticationEntryPoint" ref="authenticationEntryPoint" />
< /beans:bean>
我对休息服务使用了相同的方法但是你必须要小心,无论你用什么方案编码用户名和密码,你都应该在filter中使用相同的方案来解码'Authorization'标题信息。如果您使用一些自定义方案来编码“授权”标头,那么您需要扩展“ BasicAuthenticationFilter ”并提供“授权”标题的适当解码