具有任务队列问题的Spring安全性

时间:2012-12-12 08:50:24

标签: java google-app-engine java-ee spring-mvc spring-security

在GAE中我有一个cron作业,它查找电子邮件表并开始通过推送队列工作人员每封电子邮件发送这些电子邮件。

// Worker method body
MailService m = MailServiceFactory.getMailService();
m.sendToAdmins(new MailService.Message(fromAddress, "", subject, content));

首先我想问一下发送电子邮件,我在GAE文件中读到发送电子邮件是排队的工作:

  

邮件服务将邮件排队,然后尝试发送邮件,   如果目标邮件服务器不可用,可能会重试。   错误和退回邮件将发送到发件人地址   电子邮件。

如果前一个工作方式与队列相同,那么我可以选择不使用推送队列吗?

但是我仍然希望将Push队列用于任何未来的功能,所以这是主要问题: 团队负责人使用弹簧安全性执行安全部分,任务无效。每项任务的输出:

Dec 12, 2012 8:44:2 AM com.google.apphosting.utils.jetty.AppEngineAuthentication$AppEngineAuthenticator authenticate
INFO: Returning NOBODY because of SkipAdminCheck.

请注意,当我评论以下内容时,他们确实工作得很好:

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class> org.springframework.web.filter.DelegatingFilterProxy</filterclass>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

那么您认为这是什么原因?有没有办法让任务队列工作而不影响安全性?

1 个答案:

答案 0 :(得分:1)

通过将以下内容添加到spring-security.xml(spring security layer)

,修复了它与同事的关系
<http use-expressions="true" entry-point-ref="authenticationEntryPoint">
<intercept-url pattern="/queuecontroller/**" access="permitAll" />

并在web.xml(app engine security layer)中添加约束

<security-constraint>
    <web-resource-collection>
      <web-resource-name>any-resource</web-resource-name>
      <url-pattern>/emailcontroller</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
    </auth-constraint>
    <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
  </security-constraint>