Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
luciano_garcia
Contributor III
Contributor III

Case de integração de MFA (Multi-Factor Authentication) com QVS v12

Olá Comunidade !!

Este blog é destinado a compartilhar um pouco dos caminhos que "trilhamos" quando tivemos que integrar o QlikView Server com o MFA corporativo daqui da empresa...


O blog está dividido em 2 partes (Sign In e Sign Out), para uma melhor segmentação das atividades necessárias em cada fase (porém um terceiro foi criado para descrever a implementação de grupos). O ambiente era composto por:

ItemProduto utilizado
Sistema OperacionalWindows Server 2016 Datacenter
Web ServerIIS v10
QVSQlikView Server Enterprise Edition v12.10 (x64)
Banco de DadosPostgreSQL v10 / MySQL 5.7
Identity Provider (idP)MS Azure Active Directory



Sign In


Inicialmente foi selecionado no QMC (Qlik Management Console) o método de autorização DMS (Document Metadata Service), e também era necessário implementar Single Sign-On (SSO) como processo de autenticação no QVS para se aliar a utilização de Web Ticket. Para esta fase utilizamos como material de apoio o WordPress: Integrating Single Sign On in Qlikview – Part I | BI Experience‌, seguido das partes II e III, onde criamos as tabelas que comportariam os usuários a serem lidos pelo Directory Service Connector OBDC criado no Setup do QMC (pelo que entendemos, desta forma passava-se não-obrigatória a utilização de senhas pré-cadastradas para os usuários se logarem). Nos bancos de dados PostgreSQL e MySQL fizemos testes que funcionaram para esta finalidade (porém, no PostgreSQL as tabelas requerem declaração das aspas-duplas, conforme abaixo).

odbc_postgresql.png


Um projeto de MFA foi customizado na IDE Visual Studio, para se conectar a um idP Azure e configurado para utilizar o AppID criado para a aplicação. Exemplo pode ser obtido em: https://docs.microsoft.com/pt-br/azure/active-directory/develop/active-directory-code-samples. Também foi incorporado um módulo MVC escrito em asp.net (disponível em: https://github.com/braathen/qv-webticket) e adaptado dentro do projeto criado, seguindo as orientações presentes em README.md. Este último possui a finalidade de recuperar um webticket para o usuário/grupo (tendo concluído o processo de MFA), para logá-lo no AccessPoint.


No deploy IIS foram usados 2 sites: um criado para aplicação ASPNet (somente com os arquivos os arquivos binários publicados do VS) e outro para "rodar" o AccessPoint QVS (a porta do Web Server tem que ser idêntica no setup do QMC). Todos os componentes necessários (autenticação, protocolos, pools, etc.) foram instalados no IIS, como no exemplo:

IIS_resources_mfa2.JPG

Para "ativar" a autenticação via webticket no QVS, usamos a página postada na Comunidade: An introduction to QlikView Security using Web Tickets. Basicamente, os pontos de atenção aqui, foram configurar a autenticação anônima no web server (IIS) para a pasta QvAjaxZfc, e incluir os IP's na whitelist do arquivo config.xml (neste a tag GetWebTicket já existia, então o que fizemos foi expandí-la com a adição das outras linhas, abaixo):

<GetWebTicket url="/QvAjaxZfc/GetWebTicket.aspx">

    <TrustedIP>198.168.0.0</TrustedIP>

    <TrustedIP>20.300.40.50</TrustedIP>

    <TrustedIP>127.0.0.1</TrustedIP>

</GetWebTicket>


Seguindo a ordem; 198.168.0.0: IP do host na rede privada (intranet). 20.300.40.50: IP público do host (internet). 127.0.0.1: a aplicação faz a solicitação do webticket que será usado, para o endereço local (localhost).


Outra ação que que nos ajudou, foi também incluir a página WebTicket.aspx (disponível para baixar no endereço acima), na mesma pasta do GetWebTicket.aspx - dentro de QvAjaxZfc, para testar a geração de tickets manualmente e incluir numa URL de teste diretamente no browser, no padrão descrito pelo Pablo Soto, aqui: Qlikview WebTicket Issue‌ (lembrar depois de retirá-la da pasta usada, quando em Produção), e o uso do binário no projeto postado pelo Amiem Amiem: Tool which test QlikView Webtickets que gera o ticket e permite ver o resultado diretamente no browser padrão.



Sign Out

Uma vez que a solução MVC fora implementada, nesta fase era necessário que a rotina de logout do usuário redirecionasse para a página da solução asp.net novamente (ao invés da página default, FormLogin.htm). Assim foram necessárias duas ações:

1. adicionar um bloco de código na mesma página para que resolvesse a página da solução quando iniciada no browser do usuário;

2. customizar o arquivo "C:\Arquivos de Programas\QlikView\Web\js\accessPoint.js", incluindo um bloco de código para que ao usuário clicasse no link de Sign Out do portal, houvesse o redirecionamento para a aplicação, ao invés da página padrão do QVS (FormLogin.htm).


Na página padrão FormLogin.htm foi incluída a tag, na seção <head>:


<script type="text/javascript">

if(window.location.origin == "http://subdomain.domain:port"){

    window.location.replace("https://subdomain.domain/Home/Logout")

}

else {

    location.reload()

}

</script>

Neste caso, o endereço de login padrão permaneceu inalterado (opção "Alternate login page web form", no Setup do QMC), mas a página redireciona diretamente para a aplicação MFA ao ser acessada, invés da coleta de credenciais.

Utilização de Grupos de Authorization

Por fim, foi necessária a criação de grupos de usuários de modo a melhorar a governança do AccessPoint. Para isso, além do insert dos grupos nas tabelas indicadas para o SSO, também precisamos "ajustar" a requisição do ticket no módulo MVC, informando junto com o usuário pesquisado no Banco de dados, o valor do grupo ao qual pertence (ou valores, se cadastrado em mais de um grupo), previamente recuperado do Banco de dados.

Labels (3)
0 Replies