Fórum
[Resolvido] Host específico para HTTPS
Henrique Simoes de Andrade, modificado 13 Anos atrás.
[Resolvido] Host específico para HTTPS
Regular Member Postagens: 165 Data de Entrada: 30/04/10 Postagens Recentes
Boa tarde galera,
Seguinte... na infraestrutura daqui, não é possível, pelo menos inicialmente, configurar um endereço para atender requisições HTTP e HTTPS, ou seja, quando tiver que utilizar HTTPS precisarei de outro endereço... mad:
Ficaria algo assim: http://portal.meudominio.com.br e https://portalseguro.meudominio.com.br.
Bem... tentei argumentar explicando que precisaria ser no mesmo host devido ao uso de sessão etc (ou não seria bem assim?).
Procurei pelo Liferay e não vi opção para definir host para HTTPS, só o web.server.host... então parti p/ código-fonte e achei a classe PortalImpl.java que tem o método:
Criei uma classe no Ext fazendo um extend deste PortalImpl:
O PropsValuesExt.WEB_SERVER_HOST_HTTPS está pegando o valor de uma propriedade que criei: web.server.host.https.
Daí dei uma procurada nos xml's e encontrei o util-spring.xml que define a classe a ser utilizada para implementar o Portal.java e modifiquei para:
Aí funcionou parcialmente, quando clica em 'Logar' o portal redireciona para o host definido, mas após o login continua no host HTTPS e não volta para o HTTP...
Apesar de ter funcionado para o que eu queria (provar que desta forma não vai funcionar) eu gostaria de saber se dá p/ fazer um ext deste util-spring.xml (tipo um util-spring-ext.xml) só com este trecho que fiz, pois neste caso eu estou utilizando o conteúdo inteiro do XML no ext-impl.jar.
Se estiver confuso por favor me avisem...
Meu properties-ext está assim:
Liferay 6.0.5 CE, Apache 2.2 na frente com mod_ssl configurado e um certificado de teste (criado utilizando OpenSSH).
vlw!
ps: teria melhor forma de 'extender' esta classe PortalImpl.java? apesar desta ser uma principal e acredito que nunca deveria ser 'modificada' para não dificultar atualizações, mas não vi outra opção até o momento.
Seguinte... na infraestrutura daqui, não é possível, pelo menos inicialmente, configurar um endereço para atender requisições HTTP e HTTPS, ou seja, quando tiver que utilizar HTTPS precisarei de outro endereço... mad:
Ficaria algo assim: http://portal.meudominio.com.br e https://portalseguro.meudominio.com.br.
Bem... tentei argumentar explicando que precisaria ser no mesmo host devido ao uso de sessão etc (ou não seria bem assim?).
Procurei pelo Liferay e não vi opção para definir host para HTTPS, só o web.server.host... então parti p/ código-fonte e achei a classe PortalImpl.java que tem o método:
public String getPortalURL(String serverName, int serverPort, boolean secure)
Criei uma classe no Ext fazendo um extend deste PortalImpl:
public class PortalImplExt extends PortalImpl {
public String getPortalURL(
String serverName, int serverPort, boolean secure) {
StringBundler sb = new StringBundler();
if (secure || Http.HTTPS.equals(PropsValues.WEB_SERVER_PROTOCOL)) {
sb.append(Http.HTTPS_WITH_SLASH);
}
else {
sb.append(Http.HTTP_WITH_SLASH);
}
//obter o host de acordo com o tipo de protocolo
String webServer = (!secure) ? PropsValues.WEB_SERVER_HOST : PropsValuesExt.WEB_SERVER_HOST_HTTPS;
//se for protocolo seguro e não estiver um host específico definido, utilizar o padrão.
if (secure && Validator.isNull(webServer)) {
webServer = PropsValues.WEB_SERVER_HOST;
}
if (Validator.isNull(webServer)) {
sb.append(serverName);
}
else {
sb.append(webServer);
}
if (!secure) {
if (PropsValues.WEB_SERVER_HTTP_PORT == -1) {
if ((serverPort != Http.HTTP_PORT) &&
(serverPort != Http.HTTPS_PORT)) {
sb.append(StringPool.COLON);
sb.append(serverPort);
}
}
else {
if (PropsValues.WEB_SERVER_HTTP_PORT != Http.HTTP_PORT) {
sb.append(StringPool.COLON);
sb.append(PropsValues.WEB_SERVER_HTTP_PORT);
}
}
}
if (secure) {
if (PropsValues.WEB_SERVER_HTTPS_PORT == -1) {
if ((serverPort != Http.HTTP_PORT) &&
(serverPort != Http.HTTPS_PORT)) {
sb.append(StringPool.COLON);
sb.append(serverPort);
}
}
else {
if (PropsValues.WEB_SERVER_HTTPS_PORT != Http.HTTPS_PORT) {
sb.append(StringPool.COLON);
sb.append(PropsValues.WEB_SERVER_HTTPS_PORT);
}
}
}
return sb.toString();
}
}
O PropsValuesExt.WEB_SERVER_HOST_HTTPS está pegando o valor de uma propriedade que criei: web.server.host.https.
Daí dei uma procurada nos xml's e encontrei o util-spring.xml que define a classe a ser utilizada para implementar o Portal.java e modifiquei para:
<bean id="com.liferay.portal.util.PortalUtil" class="com.liferay.portal.util.PortalUtil">
<property name="portal">
<bean class="com.liferay.portal.util.PortalImplExt" />
</property>
</bean>
Aí funcionou parcialmente, quando clica em 'Logar' o portal redireciona para o host definido, mas após o login continua no host HTTPS e não volta para o HTTP...
Apesar de ter funcionado para o que eu queria (provar que desta forma não vai funcionar) eu gostaria de saber se dá p/ fazer um ext deste util-spring.xml (tipo um util-spring-ext.xml) só com este trecho que fiz, pois neste caso eu estou utilizando o conteúdo inteiro do XML no ext-impl.jar.
Se estiver confuso por favor me avisem...
Meu properties-ext está assim:
# Definicao do uso do SSL
web.server.host=portal.meudominio.com.br
web.server.host.https=portalseguro.meudominio.com.br
web.server.protocol=http
web.server.http.port=80
web.server.https.port=443
company.security.auth.requires.https=true
session.enable.phishing.protection=false
com.liferay.portal.servlet.filters.sessionid.SessionIdFilter=true
Liferay 6.0.5 CE, Apache 2.2 na frente com mod_ssl configurado e um certificado de teste (criado utilizando OpenSSH).
vlw!
ps: teria melhor forma de 'extender' esta classe PortalImpl.java? apesar desta ser uma principal e acredito que nunca deveria ser 'modificada' para não dificultar atualizações, mas não vi outra opção até o momento.
Thiago Leão Moreira, modificado 13 Anos atrás.
RE: Host específico para HTTPS
Liferay Legend Postagens: 1449 Data de Entrada: 10/10/07 Postagens Recentes
Dae Henrique,
Bom, eu nunca fiz isso mas existe a possibilidade de criar uma arquivo chamado META-INF/ext-spring.xml. Ele vai ser carregado por último pelo contexto do Spring e acredito que ele irá sobreescrever com a tua implementação o atributo PortalImpl na classe PortalUtil.
Se der certo nos avise.
Bom, eu nunca fiz isso mas existe a possibilidade de criar uma arquivo chamado META-INF/ext-spring.xml. Ele vai ser carregado por último pelo contexto do Spring e acredito que ele irá sobreescrever com a tua implementação o atributo PortalImpl na classe PortalUtil.
Se der certo nos avise.
Henrique Simoes de Andrade, modificado 13 Anos atrás.
RE: Host específico para HTTPS
Regular Member Postagens: 165 Data de Entrada: 30/04/10 Postagens Recentes
Opa Thiago, funcionou! vlw!
Thiago Leão Moreira, modificado 13 Anos atrás.
RE: Host específico para HTTPS
Liferay Legend Postagens: 1449 Data de Entrada: 10/10/07 Postagens Recentes
Show!