Я занимаюсь разработкой углового веб-приложения, которое связано с бэкэндом Java (Spring Framework). Аутентификация осуществляется через сервер Keycloak.
На моем локальном компьютере со встроенным сервером Tomcat приложение angular и приложение spring работают без ошибок.
Для развертывания мне нужно использовать старомодный способ с использованием существующего сервера Tomcat.
Угловой интерфейс доступен в каталоге ROOT через http://myurl/
Пружинный бэкэнд помещается как файл военных действий и доступен через http://myurl/api/
На сервере все работает, кроме части аутентификации.
Angular приложение может войти через перенаправление и т. Д. И получает токен доступа.
Этот токен передается по запросу в бэкэнд пружины.
Но серверная часть возвращает неавторизованное сообщение.
Любая помощь сокращается!
Сообщение:
Невозможно аутентифицироваться с помощью заголовка авторизации
Я создал класс SecurityConfig:
@Configuration
@EnableWebSecurity
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class)
class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(
AuthenticationManagerBuilder auth) throws Exception {
KeycloakAuthenticationProvider keycloakAuthenticationProvider
= keycloakAuthenticationProvider();
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(
new SimpleAuthorityMapper());
auth.authenticationProvider(keycloakAuthenticationProvider);
}
@Bean
public KeycloakSpringBootConfigResolver KeycloakConfigResolver() {
return new KeycloakSpringBootConfigResolver();
}
@Bean
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
return new RegisterSessionAuthenticationStrategy(
new SessionRegistryImpl());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.authorizeRequests()
.antMatchers("/*")
.authenticated()
.anyRequest()
.permitAll();
}
}
Добавлена эта строка в свойства приложения
keycloak
keycloak.auth-server-url=https://authserver.net/auth
keycloak.realm=myRealm keycloak.bearer-only=true
keycloak.resource=myclient
keycloak.cors=true
И добавил это зависимости
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>1.5.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak.bom</groupId>
<artifactId>keycloak-adapter-bom</artifactId>
<version>3.3.0.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>