Commit a74ea6d3709e772443549cdabec4dc1a7c1686f6
1 parent
ee0e9739
Exists in
master
and in
1 other branch
Remove as dependencias da lib interna da ans
Remove dependencia da lib interna da ans, para o software publico. OTRS: 2019010920000392
Showing
5 changed files
with
103 additions
and
12 deletions
Show diff stats
README.md
1 | # SEI-Broker - Camada REST de acesso ao SEI | 1 | # SEI-Broker - Camada REST de acesso ao SEI |
2 | O SEI-Broker é uma camada de integração que foi desenvolvida para integrar os sistemas corporativos da ANS e o SEI, Sistema Eletrônico de Informações do TRF 4. Toda essa camada foi criada utilizando o padrão RESTful de serviços web, sua função é facilitar a integração dos sistemas da ANS com o SEI, utilizando um protocolo mais simples, moderno e performático. A adoção do broker nos permite criar uma camada de abstração para evitar que mudanças no SEI afetem as integrações, isso é possível pelo fato do broker utilizar REST e possuir contrato fraco. | 2 | O SEI-Broker é uma camada de integração que foi desenvolvida para integrar os sistemas corporativos da ANS e o SEI, Sistema Eletrônico de Informações do TRF 4. Toda essa camada foi criada utilizando o padrão RESTful de serviços web, sua função é facilitar a integração dos sistemas da ANS com o SEI, utilizando um protocolo mais simples, moderno e performático. A adoção do broker nos permite criar uma camada de abstração para evitar que mudanças no SEI afetem as integrações, isso é possível pelo fato do broker utilizar REST e possuir contrato fraco. |
3 | 3 | ||
4 | -O Broker atualmente está na versão 2.9.1, essa versão é compatível com o SEI 3.0.13. É importante destacar que é necessário atualizar o SEI-Broker a cada atualização do SEI que altere os serviços web. | 4 | +O Broker atualmente está na versão 2.9.2, essa versão é compatível com o SEI 3.0.13. É importante destacar que é necessário atualizar o SEI-Broker a cada atualização do SEI que altere os serviços web. |
5 | 5 | ||
6 | Alguns serviços adicionais foram desenvolvidos para extrair dados que não são ofertados pelos serviços nativos do SEI, estes serviços fazem acesso a base de dados do SEI e realizam operações apenas de consulta. A escrita de dados continua a ser exclusividade dos serviços nativos, desta forma a integridade e coerência das inserções é mantida. | 6 | Alguns serviços adicionais foram desenvolvidos para extrair dados que não são ofertados pelos serviços nativos do SEI, estes serviços fazem acesso a base de dados do SEI e realizam operações apenas de consulta. A escrita de dados continua a ser exclusividade dos serviços nativos, desta forma a integridade e coerência das inserções é mantida. |
7 | 7 |
apidoc.json
1 | { | 1 | { |
2 | "name": "sei-broker", | 2 | "name": "sei-broker", |
3 | - "version": "2.9.1", | 3 | + "version": "2.9.2", |
4 | "description": "Documentação da camada de integração ANS X SEI. Essa documentação serve para apoiar aos consumidores da camada de integração, pode ser necessário consultar a <a href=\"https://softwarepublico.gov.br/social/sei/manuais\">documentação oficial do SEI</a> para melhor entendimento do negócio e seus objetos. Mais informações do SEI-Broker veja o <a href=\"http://wiki.ans.gov.br/index.php/Sei-broker\">artigo wiki</a>.", | 4 | "description": "Documentação da camada de integração ANS X SEI. Essa documentação serve para apoiar aos consumidores da camada de integração, pode ser necessário consultar a <a href=\"https://softwarepublico.gov.br/social/sei/manuais\">documentação oficial do SEI</a> para melhor entendimento do negócio e seus objetos. Mais informações do SEI-Broker veja o <a href=\"http://wiki.ans.gov.br/index.php/Sei-broker\">artigo wiki</a>.", |
5 | "title": "Documentação - sei-broker", | 5 | "title": "Documentação - sei-broker", |
6 | "url":"https://<host>/sei-broker/service", | 6 | "url":"https://<host>/sei-broker/service", |
pom.xml
@@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
4 | <modelVersion>4.0.0</modelVersion> | 4 | <modelVersion>4.0.0</modelVersion> |
5 | <groupId>br.gov.ans</groupId> | 5 | <groupId>br.gov.ans</groupId> |
6 | <artifactId>sei-broker</artifactId> | 6 | <artifactId>sei-broker</artifactId> |
7 | - <version>2.9.1</version> | 7 | + <version>2.9.2</version> |
8 | <packaging>war</packaging> | 8 | <packaging>war</packaging> |
9 | <name>sei-broker</name> | 9 | <name>sei-broker</name> |
10 | <description>Camada de integração REST para comunicação com o SEI</description> | 10 | <description>Camada de integração REST para comunicação com o SEI</description> |
@@ -209,13 +209,6 @@ | @@ -209,13 +209,6 @@ | ||
209 | <version>2.6.2</version> | 209 | <version>2.6.2</version> |
210 | </dependency> | 210 | </dependency> |
211 | 211 | ||
212 | - <!-- HASH --> | ||
213 | - <dependency> | ||
214 | - <groupId>br.gov.ans.commons</groupId> | ||
215 | - <artifactId>ans-commons-security</artifactId> | ||
216 | - <version>2.0</version> | ||
217 | - </dependency> | ||
218 | - | ||
219 | <!-- PDF --> | 212 | <!-- PDF --> |
220 | <dependency> | 213 | <dependency> |
221 | <groupId>org.xhtmlrenderer</groupId> | 214 | <groupId>org.xhtmlrenderer</groupId> |
src/main/java/br/gov/ans/integracao/sei/rest/DocumentoResource.java
@@ -38,7 +38,7 @@ import org.apache.commons.io.IOUtils; | @@ -38,7 +38,7 @@ import org.apache.commons.io.IOUtils; | ||
38 | import org.apache.commons.lang3.StringUtils; | 38 | import org.apache.commons.lang3.StringUtils; |
39 | import org.jboss.logging.Logger; | 39 | import org.jboss.logging.Logger; |
40 | 40 | ||
41 | -import br.gov.ans.commons.security.crypt.HashUtils; | 41 | +import br.gov.ans.integracao.sei.utils.HashUtils; |
42 | import br.gov.ans.dao.DAO; | 42 | import br.gov.ans.dao.DAO; |
43 | import br.gov.ans.integracao.sei.client.Documento; | 43 | import br.gov.ans.integracao.sei.client.Documento; |
44 | import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento; | 44 | import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento; |
@@ -276,7 +276,7 @@ public class DocumentoResource { | @@ -276,7 +276,7 @@ public class DocumentoResource { | ||
276 | public String calcularHashDocumento(String input){ | 276 | public String calcularHashDocumento(String input){ |
277 | try { | 277 | try { |
278 | logger.debug(messages.getMessage("hash.em.geracao")); | 278 | logger.debug(messages.getMessage("hash.em.geracao")); |
279 | - return HashUtils.toSHA256(input, null); | 279 | + return HashUtils.SHA256.encrypt(input, null); |
280 | } catch (Exception ex) { | 280 | } catch (Exception ex) { |
281 | logger.error(messages.getMessage("erro.calculo.hash")); | 281 | logger.error(messages.getMessage("erro.calculo.hash")); |
282 | logger.debug(ex, ex); | 282 | logger.debug(ex, ex); |
src/main/java/br/gov/ans/integracao/sei/utils/HashUtils.java
0 → 100644
@@ -0,0 +1,98 @@ | @@ -0,0 +1,98 @@ | ||
1 | +package br.gov.ans.integracao.sei.utils; | ||
2 | + | ||
3 | +import java.nio.charset.StandardCharsets; | ||
4 | +import java.security.MessageDigest; | ||
5 | +import java.security.NoSuchAlgorithmException; | ||
6 | + | ||
7 | +import org.apache.commons.codec.binary.Base64; | ||
8 | + | ||
9 | + | ||
10 | +public class HashUtils { | ||
11 | + | ||
12 | + /** | ||
13 | + * Exclusiva para encoding Base64 | ||
14 | + * | ||
15 | + */ | ||
16 | + public static class BASE64 { | ||
17 | + | ||
18 | + | ||
19 | + /** | ||
20 | + * <p>Codifica uma String utilizado o algoritimo Base64.</p> | ||
21 | + * | ||
22 | + * @param input valor a ser decodificado | ||
23 | + * @param salt valor opcional a ser concatenado na codificação | ||
24 | + * @return String codificada | ||
25 | + */ | ||
26 | + public static String encrypt(String input, String salt) { | ||
27 | + String cipher = null; | ||
28 | + | ||
29 | + if(salt != null){ | ||
30 | + cipher = new String(Base64.encodeBase64(salt.getBytes(StandardCharsets.UTF_8))); | ||
31 | + } | ||
32 | + cipher += new String(Base64.encodeBase64(input.getBytes(StandardCharsets.UTF_8))); | ||
33 | + | ||
34 | + return cipher; | ||
35 | + } | ||
36 | + | ||
37 | + /** | ||
38 | + * <p>Decodifica uma String utilizado o algoritimo Base64.</p> | ||
39 | + * | ||
40 | + * @param input valor a ser decodificado. | ||
41 | + * @param salt valor aleatório opcional concatenado na codificação que deve ser removido | ||
42 | + * @return String decodificada | ||
43 | + */ | ||
44 | + public static String decrypt(String input, String salt) { | ||
45 | + if(salt != null){ | ||
46 | + if(input.length() > salt.length()) { | ||
47 | + byte[] key = Base64.encodeBase64(salt.getBytes(StandardCharsets.UTF_8)); | ||
48 | + input = input.substring(key.length); | ||
49 | + } else{ | ||
50 | + return null; | ||
51 | + } | ||
52 | + } | ||
53 | + | ||
54 | + return new String(Base64.decodeBase64(input.getBytes()), StandardCharsets.UTF_8); | ||
55 | + } | ||
56 | + } | ||
57 | + | ||
58 | + /** | ||
59 | + * Exclusiva para encoding SHA-256 | ||
60 | + * | ||
61 | + */ | ||
62 | + public static class SHA256 { | ||
63 | + | ||
64 | + /** | ||
65 | + * <p>Calcula o hash utilizado o algoritimo SHA-256, o método recebe os parametros input e salt, | ||
66 | + * sendo o input obrigatório e o salt opcional.</p> | ||
67 | + * | ||
68 | + * @param input valor a ser codificado | ||
69 | + * @param salt valor opcional a ser concatenado na codificação (opcional) | ||
70 | + * | ||
71 | + * @return resultado do calculo do hash. | ||
72 | + * | ||
73 | + * @throws NoSuchAlgorithmException quando o algoritimo de criptografia <b>SHA-256</b> não estiver disponível | ||
74 | + * | ||
75 | + */ | ||
76 | + public static String encrypt(String input, String salt) throws NoSuchAlgorithmException { | ||
77 | + MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); | ||
78 | + | ||
79 | + if (salt != null) { | ||
80 | + input = input + salt; | ||
81 | + } | ||
82 | + | ||
83 | + byte[] inputBytes = input.getBytes(); | ||
84 | + byte[] inputHash = sha256.digest(inputBytes); | ||
85 | + StringBuilder sb = new StringBuilder(); | ||
86 | + | ||
87 | + for (int i = 0; i < inputHash.length; i++) { | ||
88 | + sb.append(Integer.toString((inputHash[i] & 0xff) + 0x100, 16) | ||
89 | + .substring(1)); | ||
90 | + } | ||
91 | + | ||
92 | + String generatedHash = sb.toString(); | ||
93 | + return generatedHash; | ||
94 | + } | ||
95 | + } | ||
96 | + | ||
97 | + | ||
98 | +} |