使用Spring Security自定义Http授权标头

时间:2013-03-17 20:45:09

标签: authentication grails spring-security http-headers sha1

我们正在使用Grails框架构建Restful服务,并使用Spring Security插件为其提供安全性。当您想要使用自定义授权标头进行身份验证时,我想与您联系,了解最佳方法。有关此方法的更多信息,请参阅此处 Custom HTTP Authorization Header

在我的情况下,客户端ID和密码存储在Ldap中,头部附带SHA1加密。使用Spring Security实现此目的的最佳方法是什么?

我也在Grails邮件列表中提出了同样的问题。

任何见解都会有所帮助。谢谢。

〜ABHI

2 个答案:

答案 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 ”并提供“授权”标题的适当解码