1

spring-boot プロジェクトに「spring-boot-starter-actuator」依存関係を追加しました。

プロジェクトにはすでにフォーム ベースのセキュリティがあります。

アプリケーションのルート コンテキストは「/」です。

application.yaml に次のように追加して、コンテキスト ルート "/actuators" にアクチュエータを追加しました。

管理: コンテキストパス: /actuators

「健康」などの非敏感なアクチュエーターが機能しています。

機密アクチュエータにアクセスしようとすると、ユーザー名/パスワードのポップアップが表示されます。認証は行われますが、"403" Access is Denied と表示されます。

Web セキュリティの設定は次のとおりです。

@Configuration
@EnableWebSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private AuthenticationLookupService authenticationLookupService;
private AuthenticationManagerBuilder authenticationManagerBuilder;
private UrlSuccessAuthenticationHandler successHandler;

@Autowired
public void setAuthenticationLookupService(AuthenticationLookupService authenticationLookupService) {
    this.authenticationLookupService = authenticationLookupService;
}

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) {
    this.authenticationManagerBuilder = auth;
}

@Autowired
public void setSuccessHandler(UrlSuccessAuthenticationHandler successHandler) {
    this.successHandler = successHandler;
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/", "/index.html", "/auth/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/index.html").successHandler(successHandler)
            .permitAll()
            .and()
            .logout()
            .permitAll();

    http.csrf().disable(); // todo: fix later
}

@PostConstruct
public void process() throws Exception {
    this.authenticationManagerBuilder.userDetailsService(this.authenticationLookupService).passwordEncoder(new ShaPasswordEncoder());
}

}

4

1 に答える 1

1

以下の値を application.properties または application.yml に追加し、ポップアップでユーザー名とパスワードを要求されたら、この資格情報を提供します。

security.user.name=admin
security.user.password=secret

値を提供している場合は、そのユーザーがADMIN役割を持っているかどうかを確認してください。これは、機密性の高いエンドポイントにアクセスするには、アクチュエーターが ADMIN 役割のユーザーを必要とするためです。

更新 spring-boot 1.5.*+ を使用している場合、ユーザーにはACTUATORロールが必要です

于 2016-08-09T19:52:12.387 に答える