Erro ao Incluir uma Página da Aplicação JSF em um Iframe de um site externo

0 respostas
jsfspringjava
G

Olá Pessoal,
Tenho uma aplicação JSF onde preciso incluir uma página dela em um iframe localizado em um site externo em outro domínio.
Utilizo Spring Security, tentei habilitar o CORS mas não funcionou.
Consegui habilitar a inclusão da página no iframe configurando o contentSecurityPolicy, mas a página é exibida no iframe porém os botões da página não executam nenhuma ação. Acontece isso no Chrome e no Edge de não executar nenhuma ação, já no Firefox funciona normalmente, no Chrome e Edge parece que bloqueiam as ações dos botões do formulário.
Pelo que andei pesquisando parece ser um problema de CORS mas configurei e mesmo assim não funcionou.
Vou postar minhas configurações da Classe SecurityConfig.java

package servicosonline.seguranca;

import java.util.Arrays;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.header.writers.StaticHeadersWriter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
	
	@Autowired
	public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
		 //Minhas configurações...
	}
	
	public void configure(HttpSecurity http) throws Exception {		  
		http.csrf().disable()
		.cors()
		.and().headers().frameOptions().sameOrigin()
		.contentSecurityPolicy("form-action 'self'; frame-ancestors 'self' https://www.meusite.com.br);
		http.exceptionHandling().accessDeniedPage("/acessonegado.jsf")		  
		.and()
		.authorizeRequests()
		.antMatchers("/resources/**","/javax.faces.resource/**").permitAll()  
		.antMatchers("/publico/**").permitAll()	
		
		.anyRequest().authenticated()
		.and()		
		.logout().logoutSuccessUrl("/logout.jsf")
		
		.permitAll()
		.and()  
		.formLogin().loginPage("/login.jsf")  
		.failureUrl("/login.jsf?erro")
		.defaultSuccessUrl("/restrito/principal.jsf", true)
		.permitAll()
		.and()
		.httpBasic();
	}
		
	@Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("https://www.meusite.com.br")); // define os domínios permitidos
        configuration.setAllowedMethods(Arrays.asList("GET", "POST")); // define os métodos HTTP permitidos
        configuration.setAllowedHeaders(Arrays.asList("Content-Type", "Authorization", "Access-Control-Allow-Origin")); // define os headers permitidos
        configuration.setExposedHeaders(Arrays.asList("Access-Control-Allow-Origin"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }	
}

Alguém tem alguma solução? Já tentei várias alternativas mas ainda não funcionou. Se alguém tiver alguma solução agradeço imensamente.

Criado 19 de julho de 2023
Respostas 0
Participantes 1