ホームページ > Java > &#&チュートリアル > Spring Security のロールベースの承認が失敗するのはなぜですか?

Spring Security のロールベースの承認が失敗するのはなぜですか?

Barbara Streisand
リリース: 2024-12-09 02:28:09
オリジナル
946 人が閲覧しました

Why Are My Spring Security Role-Based Authorizations Failing?

Spring Security でのロール認可の修正

Spring Security は堅牢な認可メカニズムを提供しますが、不適切な構成はセキュリティの脆弱性につながる可能性があります。この記事では、制限されたロールを持つユーザーが管理者用に予約されたリソースにアクセスできるという一般的な問題について説明します。

提供されたコード スニペットは、メモリ内認証と JDBC 認証の両方を使用して Spring Security を構成します。この問題は、username=? のユーザーからのユーザー名、パスワード、1 の選択に起因すると考えられます。

この問題は、authorizeRequests() メソッド内のマッチャーの順序に起因します。 Spring Security はマッチャーを順番に評価し、最初の一致によって認可の決定が決まります。この場合、次のマッチャー:

.anyRequest().authenticated()
ログイン後にコピー

がロールベースのマッチャー:

.antMatchers("/users/all").hasRole("admin")
ログイン後にコピー

の前に配置されます。その結果、ユーザーが認証されている限り、すべてのリクエストが承認されます。 、役割に関係なく。これを解決するには、ロールベースのマッチャーが優先されるようにマッチャーの順序を変更します。

protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable()
        .httpBasic()
        .and()
        .authorizeRequests()
            .antMatchers("/users/all").hasRole("admin")
            .anyRequest().authenticated()
            .and()
        .formLogin()
        .and()
        .exceptionHandling().accessDeniedPage("/403");
}
ログイン後にコピー

この修正された構成では、「user」ロールのみを持つユーザーは「/users/all」へのアクセスを拒否されます。一方、「admin」ロールを持つユーザーはアクセス権を持ちます。

Spring Security の承認を構成するときは、意図したセキュリティ ポリシーが確実に適用されるようにマッチャーの順序を覚えておくことが重要です。

以上がSpring Security のロールベースの承認が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート