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

Spring Boot应用程序endpoint返回403

施刚毅
2023-03-14

我是Spring Boot的新手,目前被卡住了。我跟着这个(https://github.com/AppDirect/service-integration-sdk/wiki)教程,因为我想实现一个将自身集成到AppDirect中的应用程序。在日志中,我可以看到endpoint被创建和映射:

2018-10-29 16:32:48.898  INFO 8644 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/v1/integration/processEvent],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<com.appdirect.sdk.appmarket.events.APIResult> com.appdirect.sdk.appmarket.events.AppmarketEventController.processEvent(javax.servlet.http.HttpServletRequest,java.lang.String)

但是,当我尝试使用浏览器或Http-请求器访问endpoint(http://localhost:8080/api/v1/integration/processEvent)时,我会得到以下响应:{时间戳:“2018-10-29T08:50:13.252 0000”、“状态”: 403、“错误”:“禁止”、“消息”:“拒绝访问”、“路径”:“/API/v1/集成/过程事件"}

我的申请书。yml看起来像这样:

connector.allowed.credentials: very-secure:password

server:
  use-forward-headers: true
  tomcat:
    remote_ip_header: x-forwarded-for

endpoints:
  enabled: true
  info:
    enabled: true
    sensitive: false
  health:
    enabled: true
    sensitive: false
    time-to-live: 5000

info:
  build:
    name: @project.name@
    description: @project.description@
    version: @project.version@

这是我的申请表。爪哇:

package de.....;

import java.nio.charset.Charset;
import java.util.Collections;
import java.util.List;

import org.springframework.boot.SpringApplication;
import org.springframework.http.MediaType;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

public class Application extends WebMvcConfigurerAdapter {
    public static void main(String... args) {
        SpringApplication.run(RootConfiguration.class, args);
    }

    /**
     * Hack to make Spring Boot @Controller annotated classed to recognize the 'x-www-form-urlencoded' media type
     *
     * @param converters
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        FormHttpMessageConverter converter = new FormHttpMessageConverter();
        MediaType mediaType = new MediaType("application", "x-www-form-urlencoded", Charset.forName("UTF-8"));
        converter.setSupportedMediaTypes(Collections.singletonList(mediaType));
        converters.add(converter);
        super.configureMessageConverters(converters);
    }
}

这是根配置。爪哇:

package de.....;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

import com.appdirect.sdk.ConnectorSdkConfiguration;
import com.appdirect.sdk.appmarket.DeveloperSpecificAppmarketCredentialsSupplier;
import com.appdirect.sdk.credentials.StringBackedCredentialsSupplier;

import de.....;

@Configuration
@Import({
    ConnectorSdkConfiguration.class,
    EventHandlersConfiguration.class
})
@EnableAutoConfiguration
public class RootConfiguration {

    @Bean
    public DeveloperSpecificAppmarketCredentialsSupplier environmentCredentialsSupplier(@Value("${connector.allowed.credentials}") String allowedCredentials) {
        return new StringBackedCredentialsSupplier(allowedCredentials);
    }
}

任何帮助都会被感激,因为密集的谷歌搜索没有帮助。提前谢谢。

共有1个答案

能文华
2023-03-14

添加以下类并在应用程序中注册它。java解决了我的问题:

package de.......;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
@Order(1)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.authorizeRequests().antMatchers("/").permitAll();
    }

}
 类似资料:
  • 我是SpringBoot的新手,正在寻找一种在endpoint超过3秒才能返回响应时超时的方法。我尝试添加属性“server.servlet.session.timeout”,但仍然没有运气。如何做到这一点?谢谢。 Application.properties

  • 调用GET /actuator/logfile返回404错误。 我如何通过执行器/日志文件获取日志? 我有下面的配置。 我使用“本地”配置文件启动了应用程序。 我有日志文件在日志文件夹(例如api_log.2020-09-22-0.log)。 应用yml公司 logback-spring.xml 日志/file.xml /执行器/日志文件endpoint启用。

  • 我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?

  • 我正在将一个旧的java Spring项目重构为springboot,并以传统的war风格部署它。出于某种原因,我必须坚持传统的web.xml来启动应用程序。多亏了Springboot遗产,我可以通过web.xml实现这一点: 此外,我添加了springboot执行器依赖项。应用程序。属性如下所示: 应用程序可以正常启动,但当我尝试从浏览器访问endpoint时,它只返回一个“401需要完全身份验

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。