ホームページ > Java > &#&チュートリアル > Spring Security がユーザーの役割に基づいてアクセスを適切に制限できないのはなぜですか?

Spring Security がユーザーの役割に基づいてアクセスを適切に制限できないのはなぜですか?

Susan Sarandon
リリース: 2024-12-13 21:56:17
オリジナル
873 人が閲覧しました

Why Can't Spring Security Properly Restrict Access Based on User Roles?

Spring Security でのロールの問題の解決

問題:

Spring Security をプロジェクトでは、「ユーザー」ロールのみを持つユーザーが管理者固有のリソースにアクセスできることが観察されています。疑わしい問題はユーザー認証クエリ内にあります。

分析:

構成は、メモリ内と JDBC の両方に基づく認証を試行します。権限を取得するためのクエリは、「select users_username,roles_id fromroles_users where users_username=?」で構成されます。

原因:

ただし、この問題は、認可マッチャーの順序における論理エラーに起因します。マッチャー「anyRequest().authenticated()」が「antMatchers("/users/all").hasRole("admin")」の前に誤って配置されており、ロールに関係なくすべての認証されたユーザーのアクセスが許可されています。

解決策:

この問題に対処するには、次のように認可ルールを再編成する必要があります。 Spring Security ドキュメントで指定されている順序。以下の変更された構成はエラーを修正します:

@Override
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");
}
ログイン後にコピー

この変更により、「admin」ロールを持つユーザーのみが「/users/all」へのアクセスを許可され、管理者以外のユーザーはアクセスが制限されます。保護されたリソースへのアクセス

以上がSpring Security がユーザーの役割に基づいてアクセスを適切に制限できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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