本番環境では、プロジェクトの基本認証からKeycloakへの移行が完了しました。しかし、ローカル開発、スタンドアロンとデモのインストールでは、基本認証を引き続き使用したいと考えています。これは、プロファイルなどでトリガされる可能性があります。Angular JS/Spring起動アプリケーションでkeycloakの代わりに基本認証を行う方法
このプロジェクトでは、Java/Springブートで開発されたREST APIと、これらのAPIを使用するAngularJSアプリケーションがあります。 Keycloakを使用して、AngularJSアプリとAPIの両方を保護しています。
問題は、Spring SecurityとKeycloakを、同じアプリケーションで異なるプロファイルで「一緒に」動作させる方法です。後述のように、私は、これまでのところ、春のセキュリティとKeycloakの両方を設定することがわかった、とプロパティファイルと回避策を作っソリューション:
application-keycloak.properties
#Unactivate Basic Authentication
security.ignored=/**
アプリケーション-ローカルauth。プロパティ
#Unactivate Keycloak
spring.autoconfigure.exclude=org.keycloak.adapters.springboot.KeycloakSpringBootConfiguration
私はkeycloak使用するwanto
は、私が問題を抱えていないために、セキュリティを無視する必要があると私は基本認証を使用したいとき、私はまた、競合を防ぐためにkeycloak構成を除外しなければなりません。@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and()
.authorizeRequests()
.antMatchers("/","/scripts/**","/keycloak/isActive","/keycloak/config","/bower_components/**","/views/**","/fonts/**",
"/views/inventory/dialogs/**", "/services/**","/resources/**","/styles/**", "/info")
.permitAll()
.anyRequest()
.authenticated()
.and()
.csrf().disable();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN");
}
そして、これが私のKeycloak春ブート構成です:
これは私のセキュリティ設定クラスです
# Keycloak
keycloak.realm=local
keycloak.realmKey=MIIBIjANBgkqhkiG9wsIIBCgKCAQEAuJYmaWvF3YhifflJhspXOs8RJn74w+eVD8PtpVbu2cYG9OIa49P8SwqVn/kyJQr7kT3OlCq3XMZWBHe+JSzSz7KttKkhfFSfzISdKDKlkPena2H/i3FKlRZIldbeeuQNYdD6nMpzU6QWLwGF1cUAo1M11f2p99QI1FOhVPJSErWsjDsKpWqG+rMMjT1eos0QCNP7krx/yfMdlUyaJCYiDvpOAoec3OWXvDJovEajBNAZMWVXgJF90wAVPRF6szraA2m7K2gG9ozaCNWB0v4Sy6czekbKjqEBPJo45uEmGHd92V//uf/WQG4HSiuv8CTV+b6TQxKtZCpQpqp2DyCLewIDAQAB
keycloak.auth-server-url=http://localhost:8080/auth
keycloak.ssl-required=none
keycloak.resource=App-backend
keycloak.bearer-only=true
keycloak.credentials.secret=a714aede-5af9-4560-8c9d-d655c831772f
keycloak.securityConstraints[0].securityCollections[0].name=Secured API
keycloak.securityConstraints[0].securityCollections[0].authRoles[0]=ROLE_USER
keycloak.securityConstraints[0].securityCollections[0].patterns[0]=/api/*
それが動作している、しかし、私はそれはエレガントな解決策ではないと思います。私はKeycloakプロパティを使用してこれを実装しようとしましたenable-basic-auth、しかし私はそれがどのように動作するのか理解できませんでしたが、それはちょうどレストAPIを保護するために、それは他のすべての要求に対してです。
誰かがこのようなことを実行しなければならなかったことはありますか?
問題が解決しましたか?私も同様の問題を抱えています。 – nejckorasa