Springセキュリティでは、特定のユーザー名を持つユーザーのみにアクセスを許可します

PawełLaskowski

Spring Bootアプリを開発し、ユーザーがメッセージを読めるようにするためのAPIを作成しています。URLの1つは次のとおりです。

/users/USER1/messages

さて、私は明らかに、認証されたユーザーだけがこのgetリクエストのコンテンツにアクセスできるようにしたいのです。しかし、認証されたすべてのユーザーだけでは不十分です。また、ユーザー名を持つユーザーのみがここで実際のコンテンツを表示できるようにし、残りは403ステータスを受け取る必要があります。Spring Security configなしでそれを行う方法を理解しました(私のサービスでは、ログインしたユーザー名をチェックし、URLのパラメーターと比較して、等しい場合にのみ続行します)が、もっと簡単な方法があるはずだと思いますSecurityConfigurationだけを使用していますか?私の現在の構成は次のようになります。

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers(HttpMethod.GET, "/users/**").authenticated()
            .antMatchers("/h2-console/*").permitAll()
                .anyRequest().authenticated()
            .and()
                .formLogin();

        http.csrf().disable();
        http.headers().frameOptions().disable();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("superman").password("superman").roles("USER")
                .and()
                .withUser("admin").password("admin").roles("ADMIN");
    }
}

編集:メソッドセキュリティ式を提案する次の回答私はそれを使用しましたが、それでも機能しないようです(USER2として認証されている場合でも、USER1のメッセージを読むことができます)。これが、PreAuthorizeアノテーションを追加したコントローラーです。

@RequestMapping(method = RequestMethod.GET, value = "/messages", produces = {"application/json"})
@ResponseBody
@PreAuthorize("#userHandle == authentication.name")
public List<Message> getMessages(@PathVariable("userHandle") String userHandle,
                        @RequestParam(value="search", defaultValue="") String search) {
    //todo: change to return DTO not model
    return messageFacade.getMessages(userHandle, search);
}

EDIT2:承認された回答のコメントのように、@ EnableGlobalMethodSecurity(prePostEnabled = true)をセキュリティ構成に含める必要があります。それが含まれると、すべてが正常に機能しています。

アッセンコロフ

Springメソッドセキュリティが必要だと思いますドキュメントの例は、ほとんど文字通りあなたの場合です。

import org.springframework.data.repository.query.Param;

...

@PreAuthorize("#n == authentication.name")
Contact findContactByName(@Param("n") String name);

PS:忘れないでください@EnableGlobalMethodSecurityこちらのチュートリアルをご覧ください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Springセキュリティでは、特定のユーザー名を持つユーザーのみにアクセスを許可します

分類Dev

春のセキュリティ| 匿名ユーザーにアクセスを許可する際の問題

分類Dev

確認済みの電子メールを持つユーザーにのみ書き込みを許可するセキュリティルール

分類Dev

唯一の春のセキュリティにローカルホストからの匿名ユーザーのアクセスを許可するには?

分類Dev

使用していない特定のユーザー名とパスワードを持つユーザーにデータベースへのアクセスを許可するにはどうすればよいですか?

分類Dev

一部のユーザーのみにエントリの更新を許可し、Backandですべてのユーザーに読み取りを許可するようにセキュリティを構成します

分類Dev

特定の IP から特定の UID を持つユーザーに ssh アクセスを許可する

分類Dev

アプリのデータセキュリティ-ユーザーにAndroidアプリのファイルへのアクセスを許可しない

分類Dev

1つのディレクトリのみへの読み取り/書き込みアクセスをユーザーに許可します

分類Dev

Firestoreセキュリティルール:1人の特定のユーザーへのアクセスを許可する

分類Dev

特定の役割を持つユーザーにコマンドへのアクセスを許可する

分類Dev

指定されたフィールドセキュリティプロファイルを持つユーザーに対してのみ(非)アクティブ化を許可する

分類Dev

管理者ユーザーが他のすべてのユーザーの読み取り/書き込みを許可するFirebaseセキュリティルールはセキュリティ違反を引き起こしますか?

分類Dev

複数のWebSecurityConfigurerAdapter:1つはライブラリとして、他のユーザーは独自のセキュリティアクセスを追加できます

分類Dev

特定のユーザーに対して、すでにマウントされているパーティションの1つのNTFSフォルダーのみへのアクセスを許可するにはどうすればよいですか?

分類Dev

特定の役割を持つ特定のユーザーへのアクセス許可の追加と取り消し

分類Dev

@PathVariableでJWTを使用するが、特定のユーザーのみにアクセスURLを許可する

分類Dev

sudoアクセスなしで、ユーザーのチームにサブディレクトリの+ wアクセス許可を許可する

分類Dev

ユーザーにadminpanelへのアクセスを許可しますか?

分類Dev

Python の __import__ へのユーザー入力を許可すると、セキュリティ上のリスクになりますか?

分類Dev

1つのフィールド(Django)へのユーザーアクセスのみを許可する

分類Dev

通常のユーザーに/ var / logディレクトリへのアクセスのみを許可するにはどうすればよいですか?

分類Dev

通常のユーザーに/ var / logディレクトリへのアクセスのみを許可するにはどうすればよいですか?

分類Dev

フォルダーを削除すると、「このアクションを実行するにはアクセス許可が必要です」と表示されますが、セキュリティ - すべてのユーザー - フル コントロールを許可

分類Dev

春のセキュリティでユーザーIDでユーザーをクエリする方法は?

分類Dev

yiiアプリのフォームのテキストフィールドでユーザー名にアクセスします(yiiユーザー管理モジュールを使用)

分類Dev

C#-現在のユーザーにのみアクセスを許可し、他のユーザーへのアクセスを制限する方法

分類Dev

特定のユーザーのみにデータベースへのアクセスを許可するにはどうすればよいですか?

分類Dev

ユーザーに自分のダッシュボードのみへのアクセスを許可する

Related 関連記事

  1. 1

    Springセキュリティでは、特定のユーザー名を持つユーザーのみにアクセスを許可します

  2. 2

    春のセキュリティ| 匿名ユーザーにアクセスを許可する際の問題

  3. 3

    確認済みの電子メールを持つユーザーにのみ書き込みを許可するセキュリティルール

  4. 4

    唯一の春のセキュリティにローカルホストからの匿名ユーザーのアクセスを許可するには?

  5. 5

    使用していない特定のユーザー名とパスワードを持つユーザーにデータベースへのアクセスを許可するにはどうすればよいですか?

  6. 6

    一部のユーザーのみにエントリの更新を許可し、Backandですべてのユーザーに読み取りを許可するようにセキュリティを構成します

  7. 7

    特定の IP から特定の UID を持つユーザーに ssh アクセスを許可する

  8. 8

    アプリのデータセキュリティ-ユーザーにAndroidアプリのファイルへのアクセスを許可しない

  9. 9

    1つのディレクトリのみへの読み取り/書き込みアクセスをユーザーに許可します

  10. 10

    Firestoreセキュリティルール:1人の特定のユーザーへのアクセスを許可する

  11. 11

    特定の役割を持つユーザーにコマンドへのアクセスを許可する

  12. 12

    指定されたフィールドセキュリティプロファイルを持つユーザーに対してのみ(非)アクティブ化を許可する

  13. 13

    管理者ユーザーが他のすべてのユーザーの読み取り/書き込みを許可するFirebaseセキュリティルールはセキュリティ違反を引き起こしますか?

  14. 14

    複数のWebSecurityConfigurerAdapter:1つはライブラリとして、他のユーザーは独自のセキュリティアクセスを追加できます

  15. 15

    特定のユーザーに対して、すでにマウントされているパーティションの1つのNTFSフォルダーのみへのアクセスを許可するにはどうすればよいですか?

  16. 16

    特定の役割を持つ特定のユーザーへのアクセス許可の追加と取り消し

  17. 17

    @PathVariableでJWTを使用するが、特定のユーザーのみにアクセスURLを許可する

  18. 18

    sudoアクセスなしで、ユーザーのチームにサブディレクトリの+ wアクセス許可を許可する

  19. 19

    ユーザーにadminpanelへのアクセスを許可しますか?

  20. 20

    Python の __import__ へのユーザー入力を許可すると、セキュリティ上のリスクになりますか?

  21. 21

    1つのフィールド(Django)へのユーザーアクセスのみを許可する

  22. 22

    通常のユーザーに/ var / logディレクトリへのアクセスのみを許可するにはどうすればよいですか?

  23. 23

    通常のユーザーに/ var / logディレクトリへのアクセスのみを許可するにはどうすればよいですか?

  24. 24

    フォルダーを削除すると、「このアクションを実行するにはアクセス許可が必要です」と表示されますが、セキュリティ - すべてのユーザー - フル コントロールを許可

  25. 25

    春のセキュリティでユーザーIDでユーザーをクエリする方法は?

  26. 26

    yiiアプリのフォームのテキストフィールドでユーザー名にアクセスします(yiiユーザー管理モジュールを使用)

  27. 27

    C#-現在のユーザーにのみアクセスを許可し、他のユーザーへのアクセスを制限する方法

  28. 28

    特定のユーザーのみにデータベースへのアクセスを許可するにはどうすればよいですか?

  29. 29

    ユーザーに自分のダッシュボードのみへのアクセスを許可する

ホットタグ

アーカイブ