spring-security 无效的重新导向:您使用的是敏感范围,URI必须使用https://作为方案

svgewumm  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(158)

当我登录我应用程序时,我收到一条消息
如果您是应用程序开发人员,请确保这些请求详细信息符合Google政策。redirect_uri:请访问
我尝试将此添加到我的Google云中的授权重定向URI,但出现错误
无效的重新导向:您使用的是敏感范围。URI必须使用https://作为方案

如果我添加一个url
网址://
当我登录应用程序时仍然会收到一条消息
如果您是应用程序开发人员,请确保这些请求详细信息符合Google政策。redirect_uri:请访问
我技术堆栈: java 泉湾
属性文件:

server.port=${PORT:8080}
spring.security.oauth2.client.registration.google.client-id=xxxxxx.apps.googleusercontent.com
spring.security.oauth2.client.registration.google.client-secret=xxxxxx
spring.security.oauth2.client.registration.google.scope=openid,email,profile,\
  https://www.googleapis.com/auth/spreadsheets,\
  https://www.googleapis.com/auth/spreadsheets.readonly,\
  https://www.googleapis.com/auth/drive.file,\
  https://www.googleapis.com/auth/drive,\
  https://www.googleapis.com/auth/script.scriptapp
spring.security.oauth2.client.provider.google.token-uri=https://oauth2.googleapis.com/token
spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/auth?prompt=consent&access_type=offline
spring.security.oauth2.client.provider.google.user-info-uri=https://www.googleapis.com/oauth2/v3/userinfo

获取凭据的代码:

public void initCredential(OAuth2AuthorizedClientService authorizedClientService, Authentication authentication ) {
      OAuth2AuthorizedClient authorizedClient = authorizedClientService.loadAuthorizedClient(
          "google",
          authentication.getName());
      credential = new GoogleCredential.Builder()
          .setClientSecrets(CLIENT_ID,CLIENT_SECRET)
          .setJsonFactory(GsonFactory.getDefaultInstance())
     .setTransport(GoogleNetHttpTransport.newTrustedTransport())
          .build()
          .setAccessToken(authorizedClient.getAccessToken().getTokenValue())
          .setRefreshToken(authorizedClient.getRefreshToken().getTokenValue());
  }

还有Oauth2配置:

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends VaadinWebSecurityConfigurerAdapter {

  private static final String LOGIN_URL = "/login";

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    super.configure(http);
    http.oauth2Login()
        .loginPage(LOGIN_URL).permitAll();
  }

  @Override
  public void configure(WebSecurity web) throws Exception {
    super.configure(web);
    web.ignoring().antMatchers(
            "/VAADIN/**",
            "/favicon.ico",
            "/robots.txt",
            "/manifest.webmanifest",
            "/sw.js",
            "/offline-page.html",
            "/frontend/**",
            "/webjars/**",
            "/frontend-es5/**", "/frontend-es6/**")
        .antMatchers(HttpMethod.POST, "/notifications");
  }
}

据我所知,我需要在配置中配置https协议的使用,但我不知道在哪里可以配置它
同样值得注意的是,该应用程序在本地工作,但是当将其部署到AWS并尝试通过oauth 2登录时,我得到以下消息

qqrboqgw

qqrboqgw1#

如消息You are using a sensitive scope. URI must use https:// as the scheme中所述
仅仅在谷歌云控制台中配置它对你的应用程序如何运行没有任何影响,它只是说这个重定向URI将得到支持。
您的应用程序在运行时仍使用http而不是https运行。我将假设您仍在开发中并在本地运行此应用程序,并且您尚未将我们的应用程序配置为运行https。
修正你的想法。

相关问题