安全

使用 REST API 时,你的客户端应用程序需要以特定用户的许可和限制进行交互。这种方式下,Jmix 可以将 API 调用与用户关联起来,并对请求使用 Jmix 的常规 安全验证 机制。

REST API 支持 Jmix 安全子系统 提供的各种安全机制。此外,还增加了 API 特定的机制,比如 OAuth2,用于为 API 交互提供保护。

预定义角色

REST: minimal accessrest-minimal):允许用户与应用程序通过 API 交互。

CORS

基于安全的原因,浏览器禁止 JavaScript 调用当前 origin 之外的资源。跨域资源共享(CORS)放开了这个限制,支持指定允许哪些跨域请求。

默认情况下,允许所有对 REST API 的 cross-origin 请求。如需限制 origin 列表,可以定义 jmix.cors.allowed-origins 应用程序属性或其他 CORS 属性

下列 URL 自动使用 CORS 设置:

如需在其他 URL 路径使用 CORS 设置,需要定义下列 bean(可以在主应用程序类中定义):

@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 名称注册一个 bean。此时,上面提到的属性都不会生效。

参阅 Spring Security 文档 了解更多关于 CORS 的内容。