小编dur*_*dur的帖子

org.springframework.web.client.HttpClientErrorException:401未经授权

我有网络服务网址:

http://myservice.local/aprovalanduser/?format=json&Name=India
Run Code Online (Sandbox Code Playgroud)

当我使用

http://myservice.local/aprovalanduser/?format=json&Name=India
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

org.springframework.web.client.HttpClientErrorException:401未经授权

在Web服务方法中:

method: "GET", 
data: xmlData, 
contentType: "application/xml", 
dataType: "xml", 
async: true, 
crossDomain: false,
Run Code Online (Sandbox Code Playgroud)

我只为XML设置标头,如下所示:

resttemplate httpsrestTemplate.getForObject(uri, userdetails[].class)
Run Code Online (Sandbox Code Playgroud)

spring spring-security spring-boot

5
推荐指数
1
解决办法
1万
查看次数

如何将 InputStream 传递给 REST 服务 POST 方法

如何使用 Java REST 客户端传递InputStreamcreateParcel()方法?如何POST使用 POSTMAN调用请求?

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
public int createParcel(InputStream is) {
    int awbNo = 0;
    try {
        ParcelInfo parcelInfo = null;
        parcelInfo = buildParcelInfo(is);
        awbNo = index.incrementAndGet();
        parcelInfo.setAwbNo(awbNo);
        parcelInfo.setStatus("new");
        parcelDataMap.put(awbNo, parcelInfo);
   } catch(Exception ex) {
        logger.error("Getting some exception for creating parcel : "+ex.getMessage(), ex);
   }
   return awbNo;
}

@GET
@Produces(MediaType.APPLICATION_XML)
public StreamingOutput getParcelInfo(@QueryParam("awbNo") int awbNo) {
    ParcelInfo parcelInfo = null;
    String xml = null;
    parcelInfo = parcelDataMap.get(awbNo);

    if (parcelInfo != null) { …
Run Code Online (Sandbox Code Playgroud)

java rest web-services jax-rs postman

5
推荐指数
1
解决办法
1万
查看次数

Java通过指纹比较两个音频文件

我想知道两个音频文件是否相同或者一个包含另一个。

为此,我使用音乐指纹

byte[] firstAudio = readAudioFileData("first.mp3");
byte[] secondAudio = readAudioFileData("second.mp3");

FingerprintSimilarityComputer fingerprint = 
            new FingerprintSimilarityComputer(firstAudio, secondAudio);

FingerprintSimilarity fingerprintSimilarity = fingerprint.getFingerprintsSimilarity();

System.out.println("clip is found at " + fingerprintSimilarity.getScore());
Run Code Online (Sandbox Code Playgroud)

要将音频转换为字节数组,我使用声音 API

public static byte[] readAudioFileData(final String filePath) {
    byte[] data = null;
    try {
        final ByteArrayOutputStream baout = new ByteArrayOutputStream();
        final File file = new File(filePath);
        final AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);

        byte[] buffer = new byte[4096];
        int c;
        while ((c = audioInputStream.read(buffer, 0, buffer.length)) != -1) {
            baout.write(buffer, 0, c);
        } …
Run Code Online (Sandbox Code Playgroud)

java fingerprint musicg

5
推荐指数
1
解决办法
6076
查看次数

Spring Security排除自定义筛选器上的URL

@SuppressWarnings("SpringJavaAutowiringInspection")
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

   @Autowired
   private JwtAuthenticationEntryPoint unauthorizedHandler;

   @Autowired
   private UserDetailsService userDetailsService;

   @Autowired
   public void configureAuthentication(AuthenticationManagerBuilder
      authenticationManagerBuilder) throws Exception {
      authenticationManagerBuilder.userDetailsService(userDetailsService);
   }

   @Bean
   public JwtAuthenticationTokenFilter authenticationTokenFilterBean() throws Exception {
      return new JwtAuthenticationTokenFilter();
   }

   @Override
   protected void configure(HttpSecurity httpSecurity) throws Exception {
      httpSecurity
         .csrf().disable()
         .exceptionHandling()
             .authenticationEntryPoint(unauthorizedHandler)
             .and()
         .sessionManagement()
             .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
             .and()
         .authorizeRequests()
             .antMatchers("/test").permitAll()
             .antMatchers("/api/**").permitAll()
             .anyRequest().authenticated();

      httpSecurity.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
   }
}
Run Code Online (Sandbox Code Playgroud)

我有一个在Spring Security之前运行的自定义过滤器.我希望能够/test从过滤器和Spring Security中排除某些URL(例如)以及其他被拦截的URL (如/api/**).

当使用邮递员进行测试时localhost/test,即使我有,仍然会通过过滤器antMatchers("/test").permitAll().

如何绕过过滤器?

spring-security

5
推荐指数
1
解决办法
8348
查看次数

Spring Security fullAuthenticated() 和 hasRole("ADMIN")

我想保护我的应用程序,以便任何经过admin完全身份验证的人都可以访问某些 URL,并且管理员用户也可以访问 URL,并且也完全经过身份验证。

但是现在,我无法设法找到fullyAuthenticaded() AND hasrole()一起使用的方法。

@Override
public void configure(HttpSecurity http) throws Exception {
    http
        .requestMatchers()
            .antMatchers("/api/**", "/health")
            .and()
        .authorizeRequests()
            .antMatchers("/health").permitAll()
            .and()
        .authorizeRequests()
            .antMatchers("/api/get-data").fullyAuthenticated()
            .and()
        .authorizeRequests()
            .anyRequest().hasRole("ADMIN");
}
Run Code Online (Sandbox Code Playgroud)

java spring spring-security

5
推荐指数
1
解决办法
3570
查看次数

如何在Spring Security中为REST API调用返回401?

以下是我的示例Spring Security配置。

我希望所有人/api返回HTTP 401代码,而不是将302重定向到登录页面。

我也想保留旧网页的重定向功能。

<security:http auto-config='true' use-expressions="true" >
    <security:intercept-url pattern="/api*" access="hasRole('USER')" />
    <security:intercept-url pattern="/oldweb*" access="hasRole('USER')" />

    <security:form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?login_error=1" default-target-url="/home"/>    
</security:http>
Run Code Online (Sandbox Code Playgroud)

spring spring-security

5
推荐指数
2
解决办法
3918
查看次数

Spring OAuth2:无法从 ClientDetailsS​​ervice 获取附加信息

我正在将 OAuth2 与 Spring Security 结合使用。我的身份验证管理器通过数据库配置客户端:clients.jdbc(dataSource());

一切正常,但在请求令牌时,出现异常:

2017-04-28 11:14:39.656  WARN 1200 --- [io-8096-exec-10] o.s.s.o.p.c.JdbcClientDetailsService     : Could not decode JSON for additional information: BaseClientDetails [clientId=myclientid, clientSecret=mysecret, scope=[myscope], resourceIds=[], authorizedGrantTypes=[authorization_code, refresh_token], registeredRedirectUris=null, authorities=[], accessTokenValiditySeconds=36000, refreshTokenValiditySeconds=36000, additionalInformation={}]
Run Code Online (Sandbox Code Playgroud)

有踪迹:

org.codehaus.jackson.JsonParseException: Unexpected character ('a' (code 97)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: java.io.StringReader@557a138f; line: 1, column: 2]
...
...
Run Code Online (Sandbox Code Playgroud)

其中表中的列additional_information( varchar(4096))client_details是该条目的“asdf”。

additional_information我还尝试更改from的类型StringMap<String, Object>并通过使用键“info”将其放入地图中来插入字符串。之后,我得到相同的错误,但跟踪不同:

org.codehaus.jackson.JsonParseException: Unrecognized token …
Run Code Online (Sandbox Code Playgroud)

spring spring-security oauth-2.0 spring-oauth2

5
推荐指数
0
解决办法
2200
查看次数

如何避免使用 Spring Security 重定向到某些 URL 的登录表单?

这是我的 webapp 的 Spring Security 配置

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            .antMatchers("/", LOGIN, "/webjars/**").permitAll()
            .antMatchers(CONFIGURATION).hasAuthority(Authorities.AUTHORITY_SOLMAN72_EXPORT_ENABLED.getKey())
            .antMatchers("/api/**").hasAuthority(Authorities.AUTHORITY_SOLMAN72_EXPORT_ENABLED.getKey())
            .and()
        .formLogin()
            .loginPage(LOGIN)
            .and()
        .addFilterBefore(oAuth2ClientAuthenticationProcessingFilter, BasicAuthenticationFilter.class);
}
Run Code Online (Sandbox Code Playgroud)

目前,服务器正在将LOGIN每个没有正确凭据的请求重定向到该页面。

我只想将LOGIN未经授权的请求重定向到页面CONFIGURATION,而未经授权的请求/api/**应以 403 回答。

实现这一目标的好方法是什么?

spring spring-security spring-boot

5
推荐指数
3
解决办法
3200
查看次数

Apache Camel 对 Spring Boot 3 的支持

我搜索了有关 Apache Camel 支持新的 Spring Boot 3 的信息,但没有结果。

我的问题是:Apache Camel 宣布支持 Spring Boot 3 了吗?

我能找到的只是 Apache Camel 仅适用于版本 <3.0 ...

apache-camel spring-boot

5
推荐指数
2
解决办法
6491
查看次数

Spring Boot 3及以上版本如何允许所有匿名访问?

Spring Boot从2.7.6升级到3.0.0后,公共API无法访问。

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    return http
        .csrf(CsrfConfigurer::disable)
        .authorizeHttpRequests(requests -> requests
            .anyRequest().authenticated())
            .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
            .build();
}

@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
    return web -> web
                     .ignoring()
                         .requestMatchers(CorsUtils::isPreFlightRequest)    
                         .requestMatchers("/actuator/**", "/graphiql/**", "/voyager/**", "/vendor/**", "/rest/**",
                             "/swagger-ui/**", "/v3/api-docs/**");
}
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-boot

5
推荐指数
1
解决办法
6539
查看次数