2017-03-27 9 views
2

私はSpringブートアプリケーションでoauth2認可を使用してjdbc認証を取得しています。ここで がJDBC認証のための私のコードです:任意のユーザーとのjdbc認証でアクセスが拒否されました[OAUTH2]

auth.jdbcAuthentication().dataSource(dataSource) 
     .usersByUsernameQuery(
     "select username, password, 1 from users where username = ?") 
     .authoritiesByUsernameQuery(
     "select u.username, r.name from users u, roles r, role_users ru " 
     + "where u.username = ? and u.id = ru.users_id and ru.roles_id = r.id "); 

と私の許可の設定は次のようになります。私は私のデータベース内のユーザーで認証する場合

http. 
    anonymous().disable() 
    .requestMatchers().antMatchers("/api/v1/users/**") 
    .and().authorizeRequests() 
    .antMatchers("/api/v1/users/**").access("hasRole('ADMIN')") 
    .and().exceptionHandling().accessDeniedHandler(new OAuth2AccessDeniedHandler()); 

今、すべてが正常になります。 "ADMIN"というユーザーがいるので、/api/v1/users/**リソースにアクセスできるようにする必要があります。

しかし、私はすべてaccess_deniedエラーです。私は間違って何をしていますか?より多くのコードスニペットを表示する必要があるかどうかを教えてください。私はあなたのすべての助けに感謝します。

答えて

1

ない大きな専門家が、私は

はあなたがhasRoleもしてみました方法アクセス(...)を使用したことがありませんか?

.antMatchers("/api/v1/users/**").hasRole("ADMIN") 
+0

よう

何かが今それを試してみました、それは動作しませんでした:(とにかくありがとう:) –

+0

あなたのケースでは、これと同じようだ:https://dzone.com/articles/spring-security -4-authenticate-and-authorize-usersは、httpsecurityの設定を調べます(ここで説明するように、ルールの順番であっても、http://stackoverflow.com/questions/30819337/multiple-antmatcher-in-spring-security) – rick

+0

何とか '/ api/v1/users/**'エンドポイントは動作しません。私はそれを '/ api/v1/users'に変更し、今アクセスが許可されます。しかし残念なことに、すべてのユーザー(「ADMIN」の役割を持たないユーザーも)。 –

関連する問題