当前位置: 首页 > 知识库问答 >
问题:

Spring Oauth2配置授权endpoint

艾泉
2023-03-14

我使用spring-security-oauth2:2.3.3和spring-boot-starter-security:2.0.2构建了带有REST WS的Spring web app。但我无法设置哪些endpoint受到保护。

@EnableResourceServer
@Configuration
public class ResourceServerConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/", "/customers", "/v2/**").permitAll()
                .antMatchers("/api/**").authenticated();
    }

    @Bean
    public AuthenticationManager authenticationManager(AuthenticationProvider authenticationProvider) {
        return new CustomAuthenticationManager(authenticationProvider);
    }

    @Bean
    public AuthenticationProvider authenticationProvider(UserRepository userRepository, PasswordEncoder passwordEncoder) {
        return new DBAuthenticationProvider(userRepository, passwordEncoder);
    }

}
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Override
    public void configure(AuthorizationServerSecurityConfigurer security) {
        security.checkTokenAccess("isAuthenticated()");
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients
                .inMemory()
                .withClient("ClientId")
                .secret("secret")
                .authorizedGrantTypes("password")
                .scopes("read", "write");
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
        endpoints.authenticationManager(authenticationManager);
    }
}
{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}

添加“--header”authorization:Basic{{base64 client id:password}}“也没有帮助。这怎么可能呢?

根据spring security permitAll进行编辑,仍然考虑在授权头中传递的令牌,如果令牌无效,则返回401,通过向ResourceServerConfig添加@order(1)来覆盖默认的oauth2来解决。但只有在添加“授权”标题时才会出现这种情况,而我的情况并非如此。那么这怎么可能呢?

共有1个答案

程昕
2023-03-14

将此添加到项目中。

@Configuration
public class ResourceServer extends ResourceServerConfigurerAdapter {
    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/user/**")
        .authorizeRequests().anyRequest().authenticated();
    }
}

如果要向/user/**发出任何请求,则需要将头中的访问令牌作为Authorization:Bearer{access_token}传递。所有其他endpoint都不会请求令牌。

 类似资料:
  • 1.1. 目录 1.1.1. 技能商店介绍 1.1.2. 添加技能 1.1.3. 下架技能 1.1.4. 注意事项 1.1. 目录 为了丰富设备的功能,可以按照自有产品的特性,选择平台上丰富的技能。你可以为设备配置Rokid提供的技能,为了让设备拥有更好的语音交互体验,建议每个设备开启50-100个技能。 一、技能商店介绍 二、添加技能 三、下架技能 四、注意事项 1.1.1. 技能商店介绍 该分

  • 位置授权 产品简介 通过用户授权获取用户当前地理位置信息。 位置授权截图 开放标准 1、所有入驻小程序的企业都可以使用; 2、用户信息属于用户个人隐私,请开发者妥善使用,如若发现违规情节平台保留收回接口使用权限的权利。 jd.getLocation(OBJECT) 获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用;调用时,唤起地理位置授权框。 OBJECT 参数说明: 参数 类型 必填

  • 对于Kinesis流,我使用AWSAPI网关创建了一个代理API。我为代理添加了一个使用python Lambda的自定义授权器。在发布lambda函数和部署API之后,我能够使用网关测试功能成功地测试API。我可以在cloudwatch中看到日志,其中包含来自自定义auth lambda函数的详细打印。成功身份验证后,API网关将记录推送到我的Kinesis流 但是当我从Chrome Postm

  • 我试图在Angular应用程序中调用我的登录服务,但我遇到了CORS错误。我已经在WebSecurity配置适配器上添加了cors配置。我已经尝试了下面的一些配置。邮递员一切都很好。 授权服务器配置RADAPTER 资源服务器配置RADAPTER Web安全配置r适配器

  • 问题内容: 我正在通过Groovy配置Active Directory。我能够通过UI通过活动目录进行身份验证,这意味着端口和身份验证不是问题。我有以下基于LDAP插件的内容: 这是错误: 对这个错误有任何见解吗? 更新 新密码 新错误 问题答案: 因此,有了建议中的所有新增功能, 尝试: adrealm =新的ActiveDirectorySecurityRealm(域,站点,bindName,