没有表单登录的Spring Security

我已经在我的应用程序Spring控制器中实现了Spring Security Expression:

@Controller

@RequestMapping("init")

public class InitController {

@PreAuthorize("hasRole('ROLE_ADMIN')")

@RequestMapping(value = "/", method = RequestMethod.GET)

public @ResponseBody String home(){

return "This is the init page";

}

}

使用此安全配置:

<http auto-config="true" create-session="stateless" use-expressions="true">

<intercept-url pattern="/_ah*" access="permitAll" />

<intercept-url pattern="/init/*" access="hasRole('ROLE_ADMIN')"/>

<intercept-url pattern="/init*" access="hasRole('ROLE_ADMIN')"/>

</http>

当访问该资源时,将显示默认的Spring登录表单(http://localhost:8888/spring_security_login),但是我不希望这种情况发生,并且我只想将凭据插入到请求标头中,例如“

x-authorization-key”或任何其他内容。适合的情况。

有什么可能的解决方案?

  • 仅将x-authorization-key包含在请求中是件好事
  • 如果是这样,它如何与Spring安全机制配合,即如何与“ hasRole”表达式配合
  • 我的Web服务是无状态的,并且每个请求都必须经过身份验证,这一点很重要
  • 最后,如何处理Spring安全性而不必处理Spring登录表单

标头

回答:

你可能必须阅读有关说明什么auto-config没有,然后将其删除禁用form-login。如果您专门配置要使用的内容,则配置将更加清晰。

从您的问题尚不清楚要在x-authorization-

key标题中包含什么。如果您仅使用客户端ID和共享密钥进行身份验证,则不妨使用基本身份验证,因为它已被开箱即用地支持,您可以将其添加<http-

basic />到您的配置中。如果您有更多定制的想法,那么您可能必须实现一个定制过滤器,并将其添加到Spring

Security过滤器链中以提取凭证并对其进行处理。

身份验证机制的适合方式还取决于其实际组成。通常,您的用户将具有分配的角色,这些角色通常在某种数据库中进行身份验证时加载。该hasRole表达式仅检查当前用户是否具有指定角色。通常,您只需要创建一个UserDetailsService即可以易于插入框架的标准格式加载用户信息。这在其他地方有详细介绍。如果您确实需要更多定制的内容,则有关GAE集成的博客文章包括有关如何与更复杂的系统集成的详细信息。

如果使用,Spring Security将不会创建或使用会话create-session='stateless'

PS您实际上并不需要在URL级别和处理相同URL的控制器上都包含相同的安全属性。

以上是 没有表单登录的Spring Security 的全部内容, 来源链接: utcz.com/qa/423428.html

回到顶部