<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Case de integração de MFA (Multi-Factor Authentication) com QVS v12 in Brasil</title>
    <link>https://community.qlik.com/t5/Brasil/Case-de-integra%C3%A7%C3%A3o-de-MFA-Multi-Factor-Authentication-com-QVS/m-p/1473007#M54295</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Olá Comunidade !!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;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...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;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:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" height="124" jive-data-cell="{&amp;quot;color&amp;quot;:&amp;quot;#000000&amp;quot;,&amp;quot;textAlign&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;padding&amp;quot;:&amp;quot;2&amp;quot;}" jive-data-header="{&amp;quot;color&amp;quot;:&amp;quot;#FFFFFF&amp;quot;,&amp;quot;backgroundColor&amp;quot;:&amp;quot;#6690BC&amp;quot;,&amp;quot;textAlign&amp;quot;:&amp;quot;center&amp;quot;,&amp;quot;padding&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;fontFamily&amp;quot;:&amp;quot;arial,helvetica,sans-serif&amp;quot;,&amp;quot;verticalAlign&amp;quot;:&amp;quot;baseline&amp;quot;}" style="border: 1px solid #000000; width: 588px; height: 123px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; background-color: #008000; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;Item&lt;/SPAN&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #008000; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Produto utilizado&lt;/SPAN&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Sistema Operacional&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Windows Server 2016 Datacenter&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Web Server&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;IIS v10&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;QVS&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;QlikView Server Enterprise Edition v12.10 (x64)&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Banco de Dados&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;PostgreSQL v10 / MySQL 5.7&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;Identity Provider (idP)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;MS Azure Active Directory&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;Sign In&lt;/STRONG&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Inicialmente foi selecionado &lt;SPAN style="font-size: 13.3333px;"&gt;no QMC (&lt;EM&gt;Qlik Management Console&lt;/EM&gt;) &lt;/SPAN&gt;o método de autorização DMS (&lt;EM&gt;Document Metadata Service&lt;/EM&gt;), e também era necessário implementar Single Sign-On (&lt;EM&gt;SSO&lt;/EM&gt;) 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: &lt;A href="https://biexperience.wordpress.com/2015/08/13/integrating-single-sign-on-in-qlikview-part-i/" title="https://biexperience.wordpress.com/2015/08/13/integrating-single-sign-on-in-qlikview-part-i/"&gt;Integrating Single Sign On in Qlikview – Part I | BI Experience&lt;/A&gt;‌, 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).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;IMG __jive_id="192455" alt="odbc_postgresql.png" class="jive-image image-1" src="https://community.qlik.com/legacyfs/online/192455_odbc_postgresql.png" style="height: auto;" /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Um projeto de MFA foi customizado na IDE Visual Studio, para se conectar a um idP Azure e configurado para utilizar o AppID &lt;SPAN style="font-size: 13.3333px;"&gt;criado para a aplicação&lt;/SPAN&gt;. Exemplo pode ser obtido em: &lt;A href="https://docs.microsoft.com/pt-br/azure/active-directory/develop/active-directory-code-samples"&gt;https://docs.microsoft.com/pt-br/azure/active-directory/develop/active-directory-code-samples&lt;/A&gt;. &lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;Também foi incorporado um módulo MVC escrito em asp.net (disponível em: &lt;/SPAN&gt;&lt;A href="https://github.com/braathen/qv-webticket" style="font-size: 13.3333px;" title="https://github.com/braathen/qv-webticket"&gt;https://github.com/braathen/qv-webticket&lt;/A&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;) e adaptado dentro do projeto criado, seguindo as orientações presentes em &lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;EM&gt;README.md&lt;/EM&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;. 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 &lt;EM&gt;AccessPoint&lt;/EM&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;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 &lt;SPAN style="font-size: 13.3333px;"&gt;tem que ser idêntica&lt;/SPAN&gt; no setup do QMC). Todos os componentes necessários (autenticação, protocolos, pools, etc.) foram instalados no IIS, como no exemplo:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;IMG alt="IIS_resources_mfa2.JPG" class="jive-image image-2" src="https://community.qlik.com/legacyfs/online/193046_IIS_resources_mfa2.JPG" style="height: 442px; width: 620px;" /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Para "ativar" a autenticação via webticket no QVS, usamos a página postada na Comunidade: &lt;/SPAN&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;&lt;A href="https://community.qlik.com/docs/DOC-3614"&gt;An introduction to QlikView Security using Web Tickets.&lt;/A&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Basicamente, os pontos de atenção aqui, foram configurar a autenticação anônima no web server (IIS) para a pasta &lt;EM&gt;QvAjaxZfc&lt;/EM&gt;, e incluir os IP's na &lt;EM&gt;whitelist&lt;/EM&gt; do arquivo &lt;EM&gt;config.xml&lt;/EM&gt; (neste a tag GetWebTicket já existia, então o que fizemos foi expandí-la com a adição das outras linhas, abaixo):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="xml" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15179706053591147 jive_text_macro" jivemacro_uid="_15179706053591147"&gt;
&lt;P&gt;&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;GetWebTicket&lt;/SPAN&gt; &lt;SPAN style="color: #99cc00;"&gt;url&lt;/SPAN&gt;=&lt;SPAN style="color: #ffcc33;"&gt;"/QvAjaxZfc/GetWebTicket.aspx"&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;TrustedIP&lt;/SPAN&gt;&amp;gt;198.168.0.0&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;/TrustedIP&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;TrustedIP&lt;/SPAN&gt;&amp;gt;20.300.40.50&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;/TrustedIP&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;TrustedIP&lt;/SPAN&gt;&amp;gt;127.0.0.1&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;/TrustedIP&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;/GetWebTicket&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;



















&lt;/PRE&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Seguindo a ordem; &lt;STRONG&gt;198.168.0.0:&lt;/STRONG&gt; IP do host na rede privada (intranet). &lt;STRONG&gt;20.300.40.50:&lt;/STRONG&gt; IP público do host (internet). &lt;STRONG&gt;127.0.0.1:&lt;/STRONG&gt; a aplicação faz a solicitação do webticket que será usado, para o endereço local (localhost).&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Outra ação que que nos ajudou, foi também incluir a página &lt;EM&gt;WebTicket.aspx&lt;/EM&gt; (disponível para baixar no endereço acima), na mesma pasta do GetWebTicket.aspx - dentro de QvAjaxZfc, para testar a geração de tickets &lt;SPAN style="font-size: 13.3333px;"&gt;manualmente e incluir numa URL de teste diretamente no browser, no padrão descrito pelo Pablo Soto, aqui: &lt;A href="https://community.qlik.com/thread/136599"&gt;Qlikview WebTicket Issue&lt;/A&gt;‌ (lembrar depois de retirá-la da pasta usada, quando em Produção), e o uso do binário no projeto postado pelo Amiem Amiem: &lt;A href="https://community.qlik.com/docs/DOC-7008"&gt;Tool which test QlikView Webtickets&lt;/A&gt; que gera o ticket e permite ver o resultado diretamente no browser padrão.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;Sign Out&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Uma&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt; vez que a solução MVC fora implementada, nesta fase era necessário que a rotina de &lt;EM&gt;logout&lt;/EM&gt; 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:&lt;/SPAN&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;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;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;2. customizar o arquivo "C:\Arquivos de Programas\QlikView\Web\js\accessPoint.js", &lt;SPAN style="font-size: 13.3333px;"&gt;incluindo um bloco de código&lt;/SPAN&gt; 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).&lt;/SPAN&gt;&lt;/P&gt;






































&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Na&lt;/SPAN&gt; página padrão FormLogin.htm foi incluída a tag, na seção &amp;lt;head&amp;gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15178908749134807 jive_text_macro" jivemacro_uid="_15178908749134807"&gt;
&lt;P&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/P&gt;
&lt;P&gt;if(window.location.origin == "&lt;A class="jive-link-external-small" href="http://subdomain.domainport/" rel="nofollow" target="_blank"&gt;http://subdomain.domain:port&lt;/A&gt;"){&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.location.replace("&lt;A class="jive-link-external-small" href="https://subdomain.domain/Home/Logout" rel="nofollow" target="_blank"&gt;https://subdomain.domain/Home/Logout&lt;/A&gt;")&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;else {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; location.reload()&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;

























&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="; font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;Utilização de Grupos de Authorization&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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 &lt;SPAN style="font-size: 13.3333px;"&gt;no Banco de dados, o valor do grupo ao qual pertence&lt;/SPAN&gt; (ou valores, se cadastrado em mais de um grupo), previamente&lt;SPAN style="font-size: 13.3333px;"&gt; recuperado do Banco de dados&lt;/SPAN&gt;.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 10 Feb 2018 18:29:45 GMT</pubDate>
    <dc:creator>luciano_garcia</dc:creator>
    <dc:date>2018-02-10T18:29:45Z</dc:date>
    <item>
      <title>Case de integração de MFA (Multi-Factor Authentication) com QVS v12</title>
      <link>https://community.qlik.com/t5/Brasil/Case-de-integra%C3%A7%C3%A3o-de-MFA-Multi-Factor-Authentication-com-QVS/m-p/1473007#M54295</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Olá Comunidade !!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;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...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;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:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" height="124" jive-data-cell="{&amp;quot;color&amp;quot;:&amp;quot;#000000&amp;quot;,&amp;quot;textAlign&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;padding&amp;quot;:&amp;quot;2&amp;quot;}" jive-data-header="{&amp;quot;color&amp;quot;:&amp;quot;#FFFFFF&amp;quot;,&amp;quot;backgroundColor&amp;quot;:&amp;quot;#6690BC&amp;quot;,&amp;quot;textAlign&amp;quot;:&amp;quot;center&amp;quot;,&amp;quot;padding&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;fontFamily&amp;quot;:&amp;quot;arial,helvetica,sans-serif&amp;quot;,&amp;quot;verticalAlign&amp;quot;:&amp;quot;baseline&amp;quot;}" style="border: 1px solid #000000; width: 588px; height: 123px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; background-color: #008000; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;Item&lt;/SPAN&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #008000; color: #ffffff; padding: 2px;" valign="middle"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Produto utilizado&lt;/SPAN&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Sistema Operacional&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Windows Server 2016 Datacenter&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Web Server&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;IIS v10&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;QVS&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;QlikView Server Enterprise Edition v12.10 (x64)&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;Banco de Dados&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;PostgreSQL v10 / MySQL 5.7&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;Identity Provider (idP)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;MS Azure Active Directory&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;Sign In&lt;/STRONG&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Inicialmente foi selecionado &lt;SPAN style="font-size: 13.3333px;"&gt;no QMC (&lt;EM&gt;Qlik Management Console&lt;/EM&gt;) &lt;/SPAN&gt;o método de autorização DMS (&lt;EM&gt;Document Metadata Service&lt;/EM&gt;), e também era necessário implementar Single Sign-On (&lt;EM&gt;SSO&lt;/EM&gt;) 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: &lt;A href="https://biexperience.wordpress.com/2015/08/13/integrating-single-sign-on-in-qlikview-part-i/" title="https://biexperience.wordpress.com/2015/08/13/integrating-single-sign-on-in-qlikview-part-i/"&gt;Integrating Single Sign On in Qlikview – Part I | BI Experience&lt;/A&gt;‌, 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).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;IMG __jive_id="192455" alt="odbc_postgresql.png" class="jive-image image-1" src="https://community.qlik.com/legacyfs/online/192455_odbc_postgresql.png" style="height: auto;" /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Um projeto de MFA foi customizado na IDE Visual Studio, para se conectar a um idP Azure e configurado para utilizar o AppID &lt;SPAN style="font-size: 13.3333px;"&gt;criado para a aplicação&lt;/SPAN&gt;. Exemplo pode ser obtido em: &lt;A href="https://docs.microsoft.com/pt-br/azure/active-directory/develop/active-directory-code-samples"&gt;https://docs.microsoft.com/pt-br/azure/active-directory/develop/active-directory-code-samples&lt;/A&gt;. &lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;Também foi incorporado um módulo MVC escrito em asp.net (disponível em: &lt;/SPAN&gt;&lt;A href="https://github.com/braathen/qv-webticket" style="font-size: 13.3333px;" title="https://github.com/braathen/qv-webticket"&gt;https://github.com/braathen/qv-webticket&lt;/A&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;) e adaptado dentro do projeto criado, seguindo as orientações presentes em &lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;EM&gt;README.md&lt;/EM&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;. 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 &lt;EM&gt;AccessPoint&lt;/EM&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;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 &lt;SPAN style="font-size: 13.3333px;"&gt;tem que ser idêntica&lt;/SPAN&gt; no setup do QMC). Todos os componentes necessários (autenticação, protocolos, pools, etc.) foram instalados no IIS, como no exemplo:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;IMG alt="IIS_resources_mfa2.JPG" class="jive-image image-2" src="https://community.qlik.com/legacyfs/online/193046_IIS_resources_mfa2.JPG" style="height: 442px; width: 620px;" /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Para "ativar" a autenticação via webticket no QVS, usamos a página postada na Comunidade: &lt;/SPAN&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;&lt;A href="https://community.qlik.com/docs/DOC-3614"&gt;An introduction to QlikView Security using Web Tickets.&lt;/A&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Basicamente, os pontos de atenção aqui, foram configurar a autenticação anônima no web server (IIS) para a pasta &lt;EM&gt;QvAjaxZfc&lt;/EM&gt;, e incluir os IP's na &lt;EM&gt;whitelist&lt;/EM&gt; do arquivo &lt;EM&gt;config.xml&lt;/EM&gt; (neste a tag GetWebTicket já existia, então o que fizemos foi expandí-la com a adição das outras linhas, abaixo):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="xml" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15179706053591147 jive_text_macro" jivemacro_uid="_15179706053591147"&gt;
&lt;P&gt;&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;GetWebTicket&lt;/SPAN&gt; &lt;SPAN style="color: #99cc00;"&gt;url&lt;/SPAN&gt;=&lt;SPAN style="color: #ffcc33;"&gt;"/QvAjaxZfc/GetWebTicket.aspx"&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;TrustedIP&lt;/SPAN&gt;&amp;gt;198.168.0.0&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;/TrustedIP&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;TrustedIP&lt;/SPAN&gt;&amp;gt;20.300.40.50&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;/TrustedIP&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;TrustedIP&lt;/SPAN&gt;&amp;gt;127.0.0.1&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;/TrustedIP&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;SPAN style="color: #ff99cc;"&gt;/GetWebTicket&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;



















&lt;/PRE&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Seguindo a ordem; &lt;STRONG&gt;198.168.0.0:&lt;/STRONG&gt; IP do host na rede privada (intranet). &lt;STRONG&gt;20.300.40.50:&lt;/STRONG&gt; IP público do host (internet). &lt;STRONG&gt;127.0.0.1:&lt;/STRONG&gt; a aplicação faz a solicitação do webticket que será usado, para o endereço local (localhost).&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Outra ação que que nos ajudou, foi também incluir a página &lt;EM&gt;WebTicket.aspx&lt;/EM&gt; (disponível para baixar no endereço acima), na mesma pasta do GetWebTicket.aspx - dentro de QvAjaxZfc, para testar a geração de tickets &lt;SPAN style="font-size: 13.3333px;"&gt;manualmente e incluir numa URL de teste diretamente no browser, no padrão descrito pelo Pablo Soto, aqui: &lt;A href="https://community.qlik.com/thread/136599"&gt;Qlikview WebTicket Issue&lt;/A&gt;‌ (lembrar depois de retirá-la da pasta usada, quando em Produção), e o uso do binário no projeto postado pelo Amiem Amiem: &lt;A href="https://community.qlik.com/docs/DOC-7008"&gt;Tool which test QlikView Webtickets&lt;/A&gt; que gera o ticket e permite ver o resultado diretamente no browser padrão.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;Sign Out&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;Uma&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt; vez que a solução MVC fora implementada, nesta fase era necessário que a rotina de &lt;EM&gt;logout&lt;/EM&gt; 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:&lt;/SPAN&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;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;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;2. customizar o arquivo "C:\Arquivos de Programas\QlikView\Web\js\accessPoint.js", &lt;SPAN style="font-size: 13.3333px;"&gt;incluindo um bloco de código&lt;/SPAN&gt; 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).&lt;/SPAN&gt;&lt;/P&gt;






































&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Na&lt;/SPAN&gt; página padrão FormLogin.htm foi incluída a tag, na seção &amp;lt;head&amp;gt;:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_15178908749134807 jive_text_macro" jivemacro_uid="_15178908749134807"&gt;
&lt;P&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/P&gt;
&lt;P&gt;if(window.location.origin == "&lt;A class="jive-link-external-small" href="http://subdomain.domainport/" rel="nofollow" target="_blank"&gt;http://subdomain.domain:port&lt;/A&gt;"){&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.location.replace("&lt;A class="jive-link-external-small" href="https://subdomain.domain/Home/Logout" rel="nofollow" target="_blank"&gt;https://subdomain.domain/Home/Logout&lt;/A&gt;")&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;else {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; location.reload()&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;

























&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="; font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;Utilização de Grupos de Authorization&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;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 &lt;SPAN style="font-size: 13.3333px;"&gt;no Banco de dados, o valor do grupo ao qual pertence&lt;/SPAN&gt; (ou valores, se cadastrado em mais de um grupo), previamente&lt;SPAN style="font-size: 13.3333px;"&gt; recuperado do Banco de dados&lt;/SPAN&gt;.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 10 Feb 2018 18:29:45 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Brasil/Case-de-integra%C3%A7%C3%A3o-de-MFA-Multi-Factor-Authentication-com-QVS/m-p/1473007#M54295</guid>
      <dc:creator>luciano_garcia</dc:creator>
      <dc:date>2018-02-10T18:29:45Z</dc:date>
    </item>
  </channel>
</rss>

