Я пытаюсь внедрить вход с Google в моем приложении Spring Boot с помощью пользовательского дефолта по умолчанию . Аутентификация, кажется, проходит, но когда я добираюсь до конечной точки URL, я не могу получить oauth2authenticationToken (она нулевая, если поставить как аргумент метода), и когда я получаю аутентификацию из контекста безопасности, она возвращается как анонимная Как таковой:
< /p>
У меня добавлены эти зависимости: < /p>
org.springframework.boot
spring-boot-starter-security
org.springframework.security
spring-security-oauth2-client
org.springframework.security
spring-security-oauth2-jose
< /code>
Вот мой SecurityConfig: < /p>
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.mvcMatchers("/api/users/login").permitAll()
.requestMatchers(EndpointRequest.toAnyEndpoint()).authenticated()
.antMatchers("/api/users/login**","/callback/", "/webjars/**", "/error**").permitAll()
.antMatchers("/oauth_login", "/loginFailure", "/").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login()
.defaultSuccessUrl("/api/users/loginSuccess", true)
.failureUrl("/loginFailure");
http.csrf().disable();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
< /code>
И вот конечная точка успеха: < /p>
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {
private final OAuth2AuthorizedClientService authorizedClientService;
@GetMapping("/loginSuccess")
public String getLoginInfo(Model model, OAuth2AuthenticationToken authentication) {
OAuth2AuthorizedClient client = authorizedClientService
.loadAuthorizedClient(authentication.getAuthorizedClientRegistrationId(), authentication.getName());
String userInfoEndpointUri = client.getClientRegistration().getProviderDetails().getUserInfoEndpoint().getUri();
if (!StringUtils.isEmpty(userInfoEndpointUri)) {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + client.getAccessToken().getTokenValue());
HttpEntity entity = new HttpEntity("", headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity response = restTemplate.exchange(userInfoEndpointUri, HttpMethod.GET, entity, Map.class);
Map userAttributes = response.getBody();
model.addAttribute("name", userAttributes.get("name"));
}
return "loginSuccess";
}
}
< /code>
Правильно перенаправляется в конечную точку, но OAuth2AuthenticationToken < /code> является нулевой, и, как я уже говорил, аутентификация, проводимая в контексте безопасности, является анонимной. Где проблема не предоставлять надлежащие объекты аутентификации?
Подробнее здесь: https://stackoverflow.com/questions/584 ... pring-boot
Не могу получить доступ к OAuth2AuthenticationToken при использовании Google OAuth2 в Spring Boot ⇐ JAVA
Программисты JAVA общаются здесь
1738727306
Anonymous
Я пытаюсь внедрить вход с Google в моем приложении Spring Boot с помощью пользовательского дефолта по умолчанию . Аутентификация, кажется, проходит, но когда я добираюсь до конечной точки URL, я не могу получить oauth2authenticationToken (она нулевая, если поставить как аргумент метода), и когда я получаю аутентификацию из контекста безопасности, она возвращается как анонимная Как таковой:
< /p>
У меня добавлены эти зависимости: < /p>
org.springframework.boot
spring-boot-starter-security
org.springframework.security
spring-security-oauth2-client
org.springframework.security
spring-security-oauth2-jose
< /code>
Вот мой SecurityConfig: < /p>
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.mvcMatchers("/api/users/login").permitAll()
.requestMatchers(EndpointRequest.toAnyEndpoint()).authenticated()
.antMatchers("/api/users/login**","/callback/", "/webjars/**", "/error**").permitAll()
.antMatchers("/oauth_login", "/loginFailure", "/").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login()
.defaultSuccessUrl("/api/users/loginSuccess", true)
.failureUrl("/loginFailure");
http.csrf().disable();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
< /code>
И вот конечная точка успеха: < /p>
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {
private final OAuth2AuthorizedClientService authorizedClientService;
@GetMapping("/loginSuccess")
public String getLoginInfo(Model model, OAuth2AuthenticationToken authentication) {
OAuth2AuthorizedClient client = authorizedClientService
.loadAuthorizedClient(authentication.getAuthorizedClientRegistrationId(), authentication.getName());
String userInfoEndpointUri = client.getClientRegistration().getProviderDetails().getUserInfoEndpoint().getUri();
if (!StringUtils.isEmpty(userInfoEndpointUri)) {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + client.getAccessToken().getTokenValue());
HttpEntity entity = new HttpEntity("", headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity response = restTemplate.exchange(userInfoEndpointUri, HttpMethod.GET, entity, Map.class);
Map userAttributes = response.getBody();
model.addAttribute("name", userAttributes.get("name"));
}
return "loginSuccess";
}
}
< /code>
Правильно перенаправляется в конечную точку, но OAuth2AuthenticationToken < /code> является нулевой, и, как я уже говорил, аутентификация, проводимая в контексте безопасности, является анонимной. Где проблема не предоставлять надлежащие объекты аутентификации?
Подробнее здесь: [url]https://stackoverflow.com/questions/58471871/cant-access-oauth2authenticationtoken-when-using-google-oauth2-in-spring-boot[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия