<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Plug-ins: insoft-api e insoft-base-api]]></title><description><![CDATA[<p dir="auto">Procurando abstrair funcionalidades básicas das APIs construídas pela Insoft4, foram construídos plug-ins que possuem tal objetivo.</p>
<p dir="auto">Para o correto funcionamento das APIs que utilizarem estes plug-ins, é necessário que a sua implantação seja acompanhada da implantação da API de autenticação <code>insoft-auth</code>.</p>
<p dir="auto">Os plug-ins estão configurados sob <em>groupId</em> padrão (<code>br.com.insoft4</code>) dos plug-ins da Insoft4. Desta forma, a sua injeção nos projetos das APIs dá-se da seguinte forma:</p>
<pre><code>compile "br.com.insoft4:insoft-api:&lt;version&gt;"
</code></pre>
<pre><code>compile "br.com.insoft4:insoft-base-api:&lt;version&gt;"
</code></pre>
<h2>Variações</h2>
<ul>
<li>insoft-api: para APIs que utilizem Grails 2.5.6 e Java 8.</li>
<li>insoft-base-api: para APIs que utilizem Grails 2.3.11 e Java 7.</li>
</ul>
<p dir="auto"><em><strong>Com a atualização tecnológica das aplicações, a tendência é que o plugin insoft-base-api seja descontinuado.</strong></em></p>
<hr />
<h2>Objetivos</h2>
<h3>Autenticação</h3>
<p dir="auto">O processo de autenticação, através da comunicação com a API de autenticação <code>insoft-auth</code>, está disponível nos plug-ins, não sendo necessária a implementação de código em cada API.</p>
<p dir="auto">O controller <code>br.com.insoft4.api.v1.AutenticacaoController</code> é controlado por <a href="https://grails.github.io/grails2-doc/2.5.x/guide/single.html#versioningResources" rel="nofollow ugc">versão</a>. Assim, o acesso aos endpoints deste controller deve considerar o seu <code>namespace</code>. Exemplo:</p>
<pre><code>&lt;url base da api&gt;/v1/autenticacao/
</code></pre>
<p dir="auto">Os endpoints previstos neste controller são:</p>
<ul>
<li>index [POST] [<code>/v1/autenticacao/</code>]: realiza a autenticação do usuário, mediante parâmetros recebidos.</li>
<li>tenant [POST] [<code>/v1/autenticacao/tenant/</code>]: valida o <em>tenant</em> em cenários de aplicação que necessitem (exemplo: ambiente de vários clientes do Ponto Soft Ex).</li>
<li>logout [GET] [<code>/v1/autenticacao/logout/</code>]: invalida o token da sessão do usuário.</li>
</ul>
<h3>Segurança</h3>
<p dir="auto">A aplicação da camada de segurança também é disponibilizada pelos plug-ins, sendo realizada através da classe <code>br.com.insoft4.api.ApiFilters</code> , que realiza a validação da requisição, considerando:</p>
<ul>
<li>Token existente na requisição</li>
<li>Token válido, mediante comunicação com a API de autenticação <code>insoft-auth</code>.</li>
<li>Valor definido na configuração <code>api.security</code>, quando existir.</li>
</ul>
<hr />
<h2>Configurações</h2>
<h3>api.authenticator.url</h3>
<p dir="auto">Esta configuração é <strong>obrigatória</strong>.</p>
<p dir="auto">URL de comunicação com o autenticador, utilizado pela API para efetuar a autenticação do usuário. Exemplo:</p>
<pre><code>api.authenticator.url = "http://localhost:8081/insoft-auth"
</code></pre>
<h3>api.key.enabled</h3>
<p dir="auto">Esta configuração é <strong>opcional</strong>.</p>
<p dir="auto">Habilita uma camada de validação adicional, validando a presença de uma chave de API.</p>
<pre><code>api.key.enabled = true // false
</code></pre>
<h3><a href="http://api.key.name" rel="nofollow ugc">api.key.name</a></h3>
<p dir="auto">Esta configuração é <strong>opcional</strong>.</p>
<p dir="auto">Define o nome da chave a ser validada durante as requisições à API.</p>
<pre><code>api.key.name = "Api-Key"
</code></pre>
<h3>api.key.value</h3>
<p dir="auto">Esta configuração é <strong>opcional</strong>.</p>
<p dir="auto">Define o valor da chave a ser validada durante as requisições à API.</p>
<pre><code>api.key.value = "xkkWKmmFeZzzUtTtY4lw7c1JZtLcQlNl"
</code></pre>
<h3>api.security</h3>
<p dir="auto">Esta configuração é <strong>opcional</strong>.</p>
<p dir="auto">Visando incluir uma maior granularidade na definição de segurança, uma possibilidade de configuração foi incluída para definir de regras de acesso aos endpoints da API para os usuários, de acordo com:</p>
<pre><code>api.security = &lsqb;&lsqb;
    // Define as regras de acesso dos endpoints para o usuário
    username: "USUARIO", 
    allowed: [
        // Permite acesso à todos os endpoints do controller Empresa    
        [controller: "empresa"],
        // Permite acesso aos endpoints "save" e "update" do controller Setor
        [controller: "setor", action: ["save", "update"&rsqb;&rsqb;,
        // Permite acesso aos endpoints cujo método de requisição do controller Evento seja POST ou GET
        [controller: "evento", method: ["POST", "GET"&rsqb;&rsqb;,
        // Permite acesso aos endpoints de todos os controllers, onde o método da requisição seja GET
        [controller: "*", method: ["GET"&rsqb;&rsqb; 
    ],
    denied: [
        // Bloqueia acesso à todos os endpoints do controller Filial
        [controller: "filial"] 
    ]
], [
    username: "USER",
    allowed: [/* ... */],
    denied: [/* ... */]
&rsqb;&rsqb;
</code></pre>
]]></description><link>http://insoft-docker1:4567/topic/13/plug-ins-insoft-api-e-insoft-base-api</link><generator>RSS for Node</generator><lastBuildDate>Fri, 23 Oct 2026 09:04:32 GMT</lastBuildDate><atom:link href="http://insoft-docker1:4567/topic/13.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Jul 2021 13:18:12 GMT</pubDate><ttl>60</ttl></channel></rss>