키 클로크와 같은 오픈 소스 사용자 관리 서비스를 이용하려고합니다. 키 클록에 의해 보안 된 REST 엔드 포인트로 HTTP 요청을 보낼 angularJs 앱을 작성합니다. 백엔드에서 스프링 부트를 사용하고 있습니다. 엔드 포인트를 호출하고 승인되지 않은 출처에서 오는 요청을 차단해야하므로 가능한 결과를 얻지 못했습니다. keycloak (스프링 부트) REST 엔드 포인트를 인증하지 않습니다.
이
내가2. Github link to keycloak example
컨트롤러
-
을 따라 두 개의 링크입니다.
로그인하지 않고 REST 호출을 만들기가 있습니다.에 이 경우 나는 할 수있다. 결과를 다시 얻으십시오. 이 경우가 아니어야하며 차단해야합니다 (401 오류 발생).
로그인 할 때 REST 호출하기. api/getSample을 호출 할 수 있으며 올바른 동작입니다. 내가 검사/시험 호출 할 때 그러나 나는
XMLHttpRequest cannot load http://localhost:8090/check/test. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. The response had HTTP status code 403.
server.port = 8090
keycloak.realm = demo
keycloak.auth-server-url = http://localhost:8080/auth
keycloak.ssl-required = external
keycloak.resource = tutorial-backend
keycloak.bearer-only = true
keycloak.credentials.secret = 111-1111-111-111
keycloak.use-resource-role-mappings = true
keycloak.cors= true
keycloak.securityConstraints[0].securityCollections[0].name = spring secured api
keycloak.securityConstraints[0].securityCollections[0].authRoles[0] = user
keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /api
keycloak.securityConstraints[0].securityCollections[1].name = insecure stuff
keycloak.securityConstraints[0].securityCollections[1].authRoles[0] = user
keycloak.securityConstraints[0].securityCollections[1].patterns[0] = /check
에 대한 상시 관측소와
@RequestMapping(value = "/api/getSample")
public test welcome() {
return new test("sample");
}
@RequestMapping(value = "/check/test")
public test welcome2() {
return new test("test");
}
봄 부팅 응용 프로그램은
@SpringBootApplication
public class Application
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/api/*", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0);
return bean;
}
}
응용 프로그램 특성 파일이 테스트 케이스
ofcourse – krs8888