Безопасность

При использовании REST API ваше клиентское приложение должно работать в соответствии с разрешениями и ограничениями конкретного пользователя. Jmix связывает вызовы API с пользователем и применяет к запросам обычные возможности Jmix по контролю доступа.

REST API поддерживает множество механизмов безопасности, доступных через подсистему безопасности Jmix. Кроме того, он добавляет такие специфичные для API функции, как OAuth2, для защиты взаимодействий через API.

Предопределенные роли

REST: minimal access (rest-minimal): позволяет пользователям взаимодействовать с приложением через API.

CORS

Из соображений безопасности браузеры не разрешают сетевые вызовы JavaScript к ресурсам за пределами текущего источника. Cross-Origin Resource Sharing или CORS снимает это ограничение, поскольку позволяет указать разрешенные междоменные запросы.

По умолчанию все запросы к REST API из разных источников разрешены. Чтобы ограничить список источников, определите свойство приложения jmix.cors.allowed-origins и другие свойства CORS.

Настройки CORS автоматически применяются к следующим URL-адресам:

Если вы хотите применить настройки CORS к другому URL-адресу, определите следующий бин (это можно сделать в основном классе приложения):

@Bean
public WebSecurityConfigurerAdapter mySecurityConfigurerAdapter() {
    return new WebSecurityConfigurerAdapter() {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .requestMatchers(requestMatchers ->
                            requestMatchers.antMatchers("/myapi/hello")
                    )
                    .cors(Customizer.withDefaults())
                    .authorizeRequests(authorize ->
                            authorize.anyRequest().permitAll()
                    );
        }
    };
}

Чтобы заменить предоставленную Jmix конфигурацию CORS по умолчанию, зарегистрируйте бин с именем corsConfigurationSource в своем проекте. В этом случае упомянутые выше свойства работать не будут.

Дополнительные сведения о CORS см. в документации по безопасности Spring.