相关疑难解决方法(0)

如何为RESTful端点禁用基于spring form的登录?

我根据基本和基于表单的身份验证配置了spring-security auto-config='true'.

我希望端点/api/**不使用基于表单的安全性.外部的其他端点/api/**应使用基于表单的登录.我想401发送一个响应,发送给这些没有提供凭据的端点/api/**.

更新:感谢Luke Taylor在下面的评论,我提出了以下解决方案.

注意:此技术仅适用于spring-security 3.1.

首先我单挑/api/**.我们从不创建一个会话虽然使用一个如果可用,这是由处理create-session="never"和使用<session-management/>.

<http pattern="/api/**" create-session="never" use-expressions="true">
    <http-basic />
    <session-management />
    <intercept-url pattern="/api/**" access="hasRole('API_ACCESS')"/>
</http>

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/" access="permitAll"/>
    <intercept-url pattern="/**" access="isAuthenticated()"/>
</http>
Run Code Online (Sandbox Code Playgroud)

java spring spring-security

10
推荐指数
1
解决办法
8166
查看次数

没有表单登录的Spring安全性

我在我的应用程序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";
    }
}
Run Code Online (Sandbox Code Playgroud)

使用此安全配置:

<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>
Run Code Online (Sandbox Code Playgroud)

当访问此资源时,将显示默认的Spring登录表单(http://localhost:8888/spring_security_login)但是我不希望这种情况发生,并且我只想将凭据插入请求标头中,如"x-authorization-key"或其他适合这种情况.

这有什么可能的解决方案?

  • 让x-authorization-key在请求中是一件好事
  • 如果是这样,它如何适应Spring安全机制,就是它如何适应"hasRole"表达式
  • 重要的是我的Web服务是无状态的,并且每个请求都经过身份验证
  • 最后,如何处理Spring安全性而无需处理Spring登录表单

java rest spring spring-security

6
推荐指数
1
解决办法
2万
查看次数

Spring Security OAuth - 如何禁用登录页面?

我想使用 OAuth 2 通过 Spring Security 保护我的应用程序。但是,我不希望服务器重定向传入的未经授权的请求,而是使用 HTTP 401 进行响应。这可能吗?

示例:此代码将请求重定向到默认登录页面。

应用程序属性

spring.security.oauth2.client.registration.google.client-id=...
spring.security.oauth2.client.registration.google.client-secret=...
Run Code Online (Sandbox Code Playgroud)

验证配置文件

@Configuration
public class AuthConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/secured/**").authenticated()
            .anyRequest().permitAll()
            .and()
            .oauth2Login();


        // /sf/ask/2220020981/
        // deos not work
        // .and()
        // .formLogin().successHandler((request, response, authentication) -> {});
    }
}
Run Code Online (Sandbox Code Playgroud)

spring spring-security oauth-2.0

4
推荐指数
2
解决办法
1855
查看次数

标签 统计

spring ×3

spring-security ×3

java ×2

oauth-2.0 ×1

rest ×1