Страница аутентификации Google не перенаправляет после аутентификации с использованием OAuth2.0 - PullRequest
0 голосов
/ 07 июля 2019

Я настраиваю безопасность пружины, используя OAuth2.0, используя приложение весенней загрузки.Страница аутентификации приходит с уже авторизованным пользователем Google, но после выбора она снова загружает ту же страницу аутентификации.

HomeController.java

import java.security.Principal;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
public class HomeController {


    @RequestMapping("/")
    public ModelAndView home() {
        System.out.println("inside home");
        ModelAndView model = new ModelAndView("home");
        return model;
    }

    @RequestMapping("/login")
    public ModelAndView loginPage() {
        System.out.println("inside login");
        ModelAndView model = new ModelAndView("login");
        return model;
    }

    @RequestMapping("user")
    @ResponseBody
    public Principal user(Principal principal) {
        System.out.println("inside userrrrrrrrr");
        return principal;
    }
}

AppSecurityConfig.java

@Configuration
@EnableWebSecurity  
@EnableOAuth2Sso
public class AppSecurityConfig extends WebSecurityConfigurerAdapter{

@Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {

       // System.out.println(httpSecurity.);
        try {
            System.out.println("inside configure");
            httpSecurity
            .csrf().disable()
            .authorizeRequests().antMatchers("/login").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin().disable();
        }catch(Exception e) {
            System.err.println("exception caught:"+e);
        }   

    }
}

Это мой файл application.properties для конфигурации OAuth: я изменяю идентификатор клиента и секретный код клиента.

security.oauth2.client.client-id = 434559791042-642qk4agcs32g1rajsssss62ilrd86s4.apps.googleusercontent.com
security.oauth2.client.client-secret = 1l4jqw7lBailpuVgWobvcxwo 
security.oauth2.client.access-token-uri = https://www.googleapis.com/oauth2/v3/token
security.oauth2.client.user-authorization-uri = https://accounts.google.com/o/oauth2/auth
security.oauth2.client.tokenName = oauth_token
security.oauth2.client.authenticationScheme = query
security.oauth2.client.clientAuthenticationScheme = form
security.oauth2.client.scope = profile email

security.oauth2.resource.user-info-uri = https://www.googleapis.com/userinfo/v2/me
security.oauth2.resource.preferTokenInfo = false

в моем приложении Google API, которое я дал ниже, перенаправляет.

Авторизованные источники JavaScript: http://localhost:8080 Авторизованные URI перенаправления: http://localhost:8080/login

Фрейм аутентификации Google приходит с моей уже авторизованной учетной записью, но когда я выбираю его, он снова показываеттот же кадр аутентификации.После аутентификации он должен быть перенаправлен на родное приложение.

1 Ответ

0 голосов
/ 08 июля 2019

Проверьте, что Redirect_uri Spring отправляет в Google.Вы можете сделать это в своих браузерах, щелкнув правой кнопкой мыши и выбрав «Осмотреть», затем перейдите на вкладку «Сеть».Поэтому, когда вы выбираете вход в Google в своем веб-приложении, вы должны увидеть, как Spring отправляет ответ о перенаправлении в ваш браузер, это будет Google, и он будет включать параметр redirect_uri, куда Google будет отправлять перенаправление.Убедитесь, что это правильно.И убедитесь, что он совпадает с URI, который вы указали Google на странице API, поскольку Google заблокирует все, о чем он не знает.

...