Я пытаюсь поиграть с сервисом управления пользователями с открытым исходным кодом, например keycloak. Создание приложения angularJs, которое будет отправлять HTTP-запрос на конечную точку REST, защищенную keycloak. Я использую весенний ботинок на бэкэнде. Я могу вызвать конечную точку и получить результат, который невозможен, поскольку он должен блокировать запрос, поступающий от несанкционированного источника.keycloak (spring boot) Не аутентифицируется конечная точка REST
Это две ссылки, которые я последовал
2. Github link to keycloak example
контроллер, который состоит из конечной точки REST, что пользователь зайдет.
@RequestMapping(value = "/api/getSample")
public test welcome() {
return new test("sample");
}
@RequestMapping(value = "/check/test")
public test welcome2() {
return new test("test");
}
Spring приложений загрузки с CORS файлы свойств
@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;
}
}
Применение для
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
Там находятся два тест
Создание 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.
of the course У меня есть – krs8888