首页 > 解决方案 > Spring OAuth2 安全问题

问题描述

我目前正在实施 Authorization_Code 类型的 OAuth2 流以在我的网站上进行单点登录 (SSO)。

这是我启用它的代码。

  @Override
  protected void configure(final HttpSecurity http) throws Exception {
    // @formatter:off
    http.authorizeRequests()
        .antMatchers("/login", "/authorize", "/error")
        .permitAll()
        .anyRequest()
        .authenticated()
        .and().formLogin().loginPage("https://sso.mywebsite.com").loginProcessingUrl("/perform_login")
        .defaultSuccessUrl("/success",true)
        .failureUrl("/error").permitAll()
        .and()
        .csrf()
        .disable();
    // @formatter:on
  }

我的担忧如下所述。

要发出登录请求(使用用户名和密码),sso.mywebsite.com 应该向我的 oAuth 服务发出 POST 请求 - http://oauth/perform_login?username=USERNAME&password=PASSWORD

我用 Postman 试了一下,效果很好。但是,在查询参数中发送像上面这样的普通用户名和密码不是一个安全问题吗?我认为在 uri(查询参数)中公开用户凭据可能会被各种网络嗅探工具捕获。

有没有办法用不同的方法做到这一点?

标签: springspring-security-oauth2

解决方案


  1. 只要您使用 HTTPS,您的查询参数就会是安全的。
  2. 我不清楚,为什么您的 SSO 网站应该对该 URL 进行 POST(以及为什么不使用 POST 正文,而是通过 url 附加参数)。它不应该“重定向”到登录页面/授权服务器还是上面的代码来自您的授权服务器?从你的描述看有点不清楚。

推荐阅读