【问题标题】:Issues while working with Spring Security Rest Plugin使用 Spring Security Rest 插件时的问题
【发布时间】:2014-09-13 19:54:40
【问题描述】:

我正在研究 Grails 应用程序。我使用 Jaxr 插件创建了 RestApi。后来我添加了 Spring Security Core Plugin 来授权和验证我的资源。当我添加这个 Spring Security Core 插件时,我的 REST API 停止工作,我在那里也提到过: Exception While Using Rest API developed using JAX-RS Plugin with Spring Security Core Plugin

所以,我使用 Spring Security Rest Plugin 来获取我的 Rest API。我遵循了整个文档。我成功生成授权令牌。

这是我的 Config.groovy 文件部分,我在其中添加链图以进行验证:

grails.plugin.springsecurity.filterChain.chainMap = [
    '/MediaSenseEvents/SessionEvents': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter',  // Stateless chain
    '/MediaSenseEvents/login': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter',  // Stateless chain
    '/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter'                                          // Traditional chain

]

而且,我也添加了 API 调用的路径:

grails.plugin.springsecurity.controllerAnnotations.staticRules = [
....
'/MediaSenseEvents/SessionEvents': ['permitAll'],
....
]    

这里的“/MediaSenseEvents/SessionEvents”是我的 API 调用的路径。 而endpointUrl = '/MediaSenseEvents/login'

这是我的事件侦听器类,它侦听对其进行的 API 调用:

@Path('/MediaSenseEvents/SessionEvents')
class EventsListener {

@POST
//@Consumes("application/x-www-form-urlencoded")
@Consumes("application/json")
//@Secured(['permitAll'])
public String postRequest(String message, @Context HttpServletRequest request) throws IOException        {
...........
}

现在,我无法理解如何使用此生成的令牌来保护我的 REST API 调用。我仍然无法进行 REST API 调用,我使用 JAXR 插件来实现 REST API。

【问题讨论】:

  • 我认为您的静态规则未正确处理。您是否尝试过使用@Secure 注释?此外,我需要查看完整的调试输出以了解发生了什么。

标签: spring rest grails spring-security grails-plugin


【解决方案1】:

你能分享你的 Config.groovy 吗?您必须将 url 添加到链图中以验证以下内容:

grails.plugin.springsecurity.filterChain.chainMap = [
   '/v1/secure/api/**':'restTokenValidationFilter,restExceptionTranslationFilter,filterInvocationInterceptor',// Stateless chain
]

然后将生成的token发送到header中,为了改变header参数名看看下面的属性

grails.plugin.springsecurity.rest.token.validation.headerName = 'X-Auth-Token'

【讨论】:

  • 我添加了带有链映射参数的 Config.groovy 文件。那边一切都好吗?
  • 更新:在进行 API 调用时指定验证标头名称之前,我收到错误:401-未经授权但是,现在当我使用生成的令牌指定验证标头名称时,我收到错误:403-禁止
猜你喜欢
  • 2014-12-06
  • 2016-05-24
  • 1970-01-01
  • 2014-11-13
  • 2015-06-18
  • 2012-04-10
  • 2015-03-29
  • 2015-06-28
  • 2020-04-10
相关资源
最近更新 更多