, чтобы сделать это снова очень понятным, доступ осуществляется через Azure B2 C. Это, очевидно, большая разница, потому что есть два разных способа доступа к нему.
Я следовал этому руководству: https://docs.microsoft.com/en-us/azure/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory-b2c-oidc
Я пробовал другое руководство раньше но это не работает для B2 C: https://docs.microsoft.com/en-us/azure/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory
Аутентификация работает нормально. Я перенаправлен на страницу входа и возвращен после успешного входа. Информацию о пользователе можно запросить у OAuth2AuthenticationToken
.
. В браузере у моего приложения есть JSESSIONID.
В этом же домене есть служба REST, которую я хочу использовать непосредственно из внешнего интерфейса приложения. с Vue. js.
Так что я решил доставить AccessToken внешнему интерфейсу, который он может использовать для доступа к REST API.
Я искал и нашел относительно простой Пример: https://spring.io/blog/2018/03/06/using-spring-security-5-to-integrate-with-oauth-2-secured-services-such-as-facebook-and-github
Но когда я пытаюсь ie ввести OAuth2AuthorizedClientService
:
@RequestMapping(path = "/user")
public ResponseEntity<User> test(@NonNull final OAuth2AuthenticationToken token,
@AuthenticationPrincipal(expression = "idToken") final OidcIdToken idToken, final
OAuth2AuthorizedClientService clientService) {
LOG.debug("GET called on /api/user resource");
LOG.debug("OidcIdToken: {}", idToken.getTokenValue());
final OAuth2AuthorizedClient client = clientService
.loadAuthorizedClient(token.getAuthorizedClientRegistrationId(), token.getName());
LOG.debug("Access: {}", client.getAccessToken().getTokenValue());
, при доступе возникает следующая ошибка:
java.lang.NoSuchMethodException: org.springframework.security.oauth2.client.OAuth2AuthorizedClientService.<init>()
at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_231]
at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[na:1.8.0_231]
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:216) ~[spring-web-5.2.3.RELEASE.jar:5.2.3.RELEASE]
Может кто-нибудь подсказать sh меня в правильном направлении?
Обновление
Это была моя вина. Из руководства у меня сложилось впечатление, что OAuth2AuthorizedClientService
можно ввести с помощью метода.
Это не так. Это работает, только если этот класс вводится через конструктор или напрямую @inject
.
Теперь у меня есть токен доступа ...