java - 对任何用户的 jdbc 身份验证拒绝访问 [OAUTH2]

标签 java authentication spring-boot oauth-2.0 authorization

我的 Spring-Boot 应用程序中有一个 jdbc-authentication 和一个 oauth2-authorization。 这是我的 jdbc-authentication 代码:

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 错误。我究竟做错了什么?如果您需要查看更多代码片段,请告诉我。感谢您的帮助。

最佳答案

不是大专家,但我从未使用过方法access(...)

你试过 hasRole 了吗?

有点像

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

关于java - 对任何用户的 jdbc 身份验证拒绝访问 [OAUTH2],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045875/

相关文章:

java - Gradle:如何在编译后删除类文件

java - 构建将作为电子邮件发送的 HTML 消息的最佳实践? (使用Java)

java - 数据库变更和 Spring Boot JPA

google-app-engine - 在这种情况下,OAuth 和 OpenID 是正确的方法吗?

java - 使用二维数组进行用户登录验证

node.js - 使用我的应用程序登录登录我的 Gitlab CE 安装

apache - 禁用特定重写位置的 http 身份验证

java - 带有单页 angular2 重定向的 Spring Boot

java - 如何使用 Gemfire 和多个 Spring 应用程序配置在 Spring Boot 中执行集成测试?

java - Spring Boot 中 Repository 默认 "findById"函数的运行时是多少?