Я довольно новичок в проекте oauth-spring и пытаюсь создать безопасный интерфейс Rest под
/ апи / юридическое лицо
существует множество сущностей, и область действия API на данный момент внутренняя, я использую
@Configuration
static class Oauth2Config extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsServiceImpl userDetailsService;
@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
oauthServer.checkTokenAccess("permitAll()");
oauthServer.allowFormAuthenticationForClients();
}
/*
* (non-Javadoc)
*
* @see org.springframework.security.oauth2.config.annotation.web.configuration.
* AuthorizationServerConfigurerAdapter#configure(org.springframework.security.
* oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer)
*/
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
// @formatter:off
clients.inMemory()
.withClient("domain")
.secret("secret")//.accessTokenValiditySeconds(expiration)
.scopes("read", "write", "read_all", "modify", "delete")
.authorizedGrantTypes("password", "refresh_token")
.resourceIds("api");
// @formatter:on
}
/*
* (non-Javadoc)
*
* @see org.springframework.security.oauth2.config.annotation.web.configuration.
* AuthorizationServerConfigurerAdapter#configure(org.springframework.security.
* oauth2.config.annotation.web.configurers.
* AuthorizationServerEndpointsConfigurer)
*/
@Override
public void configure(AuthorizationServerEndpointsConfigurer configurer) throws Exception {
configurer.authenticationManager(authenticationManager);
configurer.userDetailsService(userDetailsService);
}
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
}
и на моем сервере ресурсов у меня есть;
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.resourceId("api");
}
и работает нормально, моя следующая задача - это интеграция (и), которые планируются под
/ апи / объект / синхронизации
Я хочу, чтобы на этот раз пользователи перенаправлялись на страницу внешнего входа в систему oauth и при аутентификации / токене процесса / синхронизации. Почти весь день, проведенный с весенними документами, не смог понять, как этого добиться.
Моя первая интеграция с провайдером, который, когда пользователь нажимает Разрешения> Разрешить, перезванивает с
- Знак
- начальная синхронизация полезной нагрузки
Я не знаю, как настроить следующие
private static final RequestMatcher API_URLS = new OrRequestMatcher(new AntPathRequestMatcher("/api/**"));
private static final RequestMatcher EXTERNAL_API_URLS = new OrRequestMatcher(new AntPathRequestMatcher("/api/**/sync"));
@Override
public void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.requestMatchers(API_URLS)
.access("#oauth2.hasScope('read')"); // require 'read' scope to access
// @formatter:on
}
, чтобы иметь возможность разрешить oauth2Login и пользовательские
.oauth2Login()
.tokenEndpoint()
.accessTokenResponseClient(accessTokenResponseClient())
.and()
.userInfoEndpoint().userService(new ExternalUserDetailsService());