Criptografando mensagens JSON like XML Encryption com WebSphere® DataPower® SOA Appliance.

Esse artigo demonstrará como o WebSphere® DataPower® SOA Appliance criptografa mensagens JSON (Java Script Object Notation) like (parecido) como XML Encryption , implementando assim segurança na transmissão de mensagens JSON. Nesse artigo será criado tanto o processo de criptografia quanto de descriptografia, utilizando os algoritmos de mercado.

Rafael Marques, IT Specialist , IBM

Rafael MarquesProfissional de Tecnologia da Informação. Formado em Tecnologia em Redes de Computadores pelo Instituto Brasileiro de Tecnologia Avançada (IBTA). Especialiasta nos produtos: WebSphere DataPower Appliance, WebSphere ILog. Possuindo certificado em DataPower. Perfil My developerWorks.



Carlos Murata, IT Specialist, IBM

Carlos MurataFormado em Ciências da Computação pela PUC/SP em 1996, funcionário da IBM desde novembro de 1995. Sólido conhecimento na area de integração de sistemas, linguagens de programação C, Java. Sistemas Operacionais: Windows, Linux, Unix, MacOS.



Rogerio Barros Venancio, IT Specialist, IBM

Rogerio Barros VenancioProfissional de Tecnologia da Informação. Formado em Matemática pelo Centro Universitário Fundação Santo André. Especialiasta em produtos da Famílias WebSphere, tais como: WebSphere MQ, WebSphere Message Broker, WebSphere Datapower, entre outros, possuindo certificados em MQ e Broker e é Instrutor Oficial da IBM. Perfil My developerWorks.



29/Nov/2012

Sumário: Esse artigo demonstrará como o WebSphere® DataPower® SOA Appliance criptografa mensagens JSON (Java Script Object Notation) like (parecido) como XML Encryption , implementando assim segurança na transmissão de mensagens JSON. Nesse artigo será criado tanto o processo de criptografia quanto de descriptografia, utilizando os algoritmos de mercado. Tais como:

Chave simétrica:

Chave assimétrica;

Tags: Criptografia , XML Encryption , DataPower® , JSON, JSONx

Objetivos: Discutir e criar possíveis cenários de utilização de criptografia de mensagens JSON, apresentando a facilidade e agilidade em implementá-los no WebSphere® DataPower® SOA Appliance.


Pré Requisitos

Possuir uma compreensão básica do funcionamento de criptografia assimétrica e chaves públicas, noções básicas de operação e configuração de serviços no DataPower® modelos XS40, XI50, XG45, XI52, conhecimento em mensagens JSON.

Noções básicas de troubleshooting (Probe) no DataPower®


Requisitos de Sistema

Para executar as atividades deste tutorial, você vai precisar ter acesso a um WebSphere® DataPower® SOA Appliance, modelo XS40 ou XI50/XI52, com firmware na versão 3.8.1.x ou superior.


Duração

Não se aplica


Referências

WebSphere DataPower® SOA Appliances: Information Center
http://publib.boulder.ibm.com/infocenter/wsdatap/v3r8m1/index.jsp?topic=/xi50/welcome.htm

WebSphere DataPower® SOA Appliances: Product Home
http://www-01.ibm.com/software/integration/datapower/

XML Signature Syntax and Processing (Second Edition)
http://www.w3.org/TR/xmldsig-core/

Criptografia Dinâmica com DataPower®
http://www.ibm.com/developerworks/br/local/websphere/datapower_soa_appliance/

Rational Application Developer for WebSphere Software
http://www-142.ibm.com/software/products/us/en/application/

JSONx conversion rules
http://publib.boulder.ibm.com/infocenter/wsdatap/v3r8m1/index.jsp?topic=%2Fxs40%2Fconvertingbetweenjsonandjsonx06.htm

Implementing a Web 2.0 RESTful facade enabled with JSON using WebSphere DataPower® SOA Appliances.
http://www.ibm.com/developerworks/websphere/library/techarticles/0912_muschett/0912_muschett.html


Introdução:

Em um mundo em que os sistemas estão cada vez mais interligados, mais próximos, existe a necessidade de utilizar os mais diferentes padrões de integração, tais como, Web Services. Quando falamos em Web Services, o primeiro nome que vem a mente é XML, porém existem outros padrões alternativos que são muito bem aceitos pelo mercado, dentre eles o padrão JSON (Java Script Object Notation).

O padrão JSON é bastante utilizado na transmissão de chamadas AJAX, em que o maior ganho é ter o conteúdo com o tamanho menor do que um XML, e isso é muito relevante em ambientes que trafegam uma grande quantidade de informações e precisam ser performáticos na entrega das mensagens.

No processo de troca de mensagens entre sistemas , um quesito indispensável é a segurança, afinal ninguém deseja que suas informações confidenciais estejam nas mãos de pessoas mal intencionadas. A forma de comunicação XML possui padrões muito utilizados e aceitos pelo mercado, tais como WS-Security, XML Encryption, XML Digital Signature, porém ao efetuar comunicação entre mensagens JSON, não existe um padrão de comunicação definido. Nesse contexto em que é necessário implementar segurança em mensagens JSON, entra o WebSphere® DataPower® SOA Appliance, que consegue trabalhar com mensagens JSON e com isso podemos criar um modelo personalizado parecido como o XML Encryption que criptografa de maneira que a mensagem JSON possa ser transmitida com segurança, ou seja, criptografada.

Esse artigo pode ser considerado com um complemento do artigo Implementing a Web 2.0 RESTful facade enabled with JSON using WebSphere DataPower® SOA Appliances. Nesse artigo trataremos tanto da criptografia quanto a descriptografia de mensagens JSON


AJAX

Antes de entrarmos mais a fundo sobre JSON, vamos entender o que é e como funciona AJAX.

AJAX significa Assynchronous JavaScript and XML (JavaScript e XML assíncronos), ou seja, não é uma nova tecnologia, mas uma junção de tecnologias existentes, providas por navegadores web. Para um melhor entendimento, vamos ver as diferenças entre o modelo clássico de aplicações WEB e o modelo WEB 2.0, que utiliza AJAX.

O modelo clássico de aplicação web trabalha assim: a maioria das ações do usuário na interface dispara uma solicitação HTTP para o servidor web. O servidor processa algo, recuperando dados, realizando cálculos, conversando com vários sistemas legados, e então retorna uma página HTML para o cliente. É um modelo adaptado do uso original da Web como um agente de hipertexto, porém o que faz a web boa para hipertexto não necessariamente a faz boa para aplicações de software.

No modelo AJAX, não existe o retorno da página HTML, e sim somente as informações que foram solicitadas, com isso há um ganho evidente de performance em relação ao HTML simples. Com isso AJAX tem as seguintes características:

O navegador hospeda uma aplicação e não o conteúdo.

O servidor fornece dados e não conteúdo.


Diferenças entre Modelo XML x JSON.

Como foi dito anteriormente , as diferenças entre mensagens XML e JSON são as seguintes:

Sintaxe;
Estrutura;
Tamanho.

Vejamos agora visualmente a diferença:

Primeiramente a mensagem JSON

Figura 1: Estrutura Mensagem JSON.

Mensagem XML:

Figura 2: Estrutura Mensagem XML.

Apesar das duas notações serem intuitivas, é evidente que uma mensagem JSON é menor que uma mensagem XML. Verificaremos agora como o padrão criptografia XML, que muda consideravelmente a mensagem :

Figura 3: Estrutura Mensagem XML criptografado.

Para saber mais sobre os campos do XML criptografado, basta acessar o seguinte artigo:
http://www.ibm.com/developerworks/br/local/websphere/datapower_soa_appliance/

Como atualmente o formato JSON não possui um modelo de segurança definido, mas com a utilização do WebSphere® DataPower® SOA Appliance, podemos criptografar o conteúdo das mensagens JSON similarmente ao XML Encryption.


Implementando JSON com DataPower®

Para entender os conceitos básicos de integração entre WebSphere® DataPower® SOA Appliance e o padrão JSON basta acessar o seguinte artigo :
http://www.ibm.com/developerworks/websphere/library/techarticles/0912_muschett/0912_muschett.html


Criptografando mensagens JSON no DataPower®

O Primeiro procedimento que nós iremos tratar é a criptografia, ou seja, o DataPower® recebe uma determinada mensagem em formato JSON e a devolve no formato JSON criptografada. A Figura 4 mostra como será essa comunicação:

Figura 4: Modelo de Utilização DataPower® com JSON.

Vamos agora aos itens da figura 4:

  1. A máquina Client faz uma solicitação JSON para o DataPower®;
  2. O DataPower® repassa essa informação para o Servidor, na figura colocamos JSON, porém pode ser XML, arquivo posicional, etc;
  3. O Client recebe a mensagem JSON criptografada pelo DataPower®.

Partiremos do Ponto em que conseguimos utilizar o DataPower® para transmitir a mensagem. Para isso criamos um MPG (Multi Protocol Gateway) que será responsável por essa transmissão. Ele deverá ter seu Request e Response type como JSON:

Figura 5: Request e Response Type em um Multi Protocol Gateway

Após definir os tipos de Request e de Response, iremos configurar um Multi Protocol Gateway Policy que receberá a mensagem JSON e repassará para o backend, sua direção será Client to Server e não será efetuado nenhum tratamento inicial para a Mensagem :

Figura 6: Configuração Multi Protocol Gateway Policy, Request Rule

Clique aqui para vizualizar a figura 6 em tamanho maior.

O procedimento de criptografia será efetuado quando a mensagem retornar do backend, para isso será efetuado a Response Rule.

O primeiro passo a ser efetuado é converter o conteúdo recebido de JSON para XML, para isso será usada uma Advanced Action, para arrastá-la para ao Pipeline é necessário clicar duas vezes sobre a mesma para ser exibida uma série de Actions, para a conversão de JSON para XML usaremos a Action Convert Query Params to XML.

Figura 7: Configuração da Action Convert Query Params to XML

Clique aqui para vizualizar a figura 7 em tamanho maior.

Ao clicar nessa Action, será exibida a tela de configuração, no qual deveremos configurar o objeto Input Conversion,

Figura 8: Configuração do objeto Input Conversion

Clique aqui para vizualizar a figura 8 em tamanho maior.

Para configurar o objeto Input Conversion, devemos informar qual é a codificação padrão, no nosso caso será JSON.

Figura 9: Configuração do objeto Configure HTTP Input Conversion Map.

Clique aqui para vizualizar a figura 9 em tamanho maior.

Após esse procedimento, a mensagem JSON será convertida para XML, podendo assim ser criptografada. Para isso, usaremos uma Crypto Action que será responsável pela criptografia da mensagem, nesse passo é necessário que um Crypto Certificate esteja configurado. Para adicionar a Crypto Action, bastar carregá-la ao Pipe Line da Regra:

Figura 10: Configuração da Criptografia de Mensagens JSON.

Clique aqui para vizualizar a figura 10 em tamanho maior.

Para configurar a Encrypt Action, basta clicar duas vezes sobre a mesma e efetuar as seguintes configurações:

No Enveloped Method marque Standart XML Encryption

No Message Type Raw XML Document .

No Recipient Certificate selecionar a chave pública que ira criptografar a mensagem. Conforme a Figura 11

Figura 11: Configuração da Crypto Action.

Clique aqui para vizualizar a figura 11 em tamanho maior.

Após esse procedimento a mensagem estará criptografada no padrão XML Encryption. Vejamos agora como a mensagem ficou após a Crypto Action:

Figura 12: Mensagem criptografada no padrão XML Encryption.

Clique aqui para vizualizar a figura 12 em tamanho maior.

Na mensagem podemos ver alguns campos que serão extremamente importantes para o processo de criptografia:

xenc:EncryptedData/xenc:EncryptionMethod : guardará o algoritmo usado na criptografia da Mensagem ;

/enc:EncryptedData/dsig:KeyInfo/xenc:EncryptedKey/xenc:EncryptionMethod : guardará o algoritmo usado na criptografia da chave de sessão

/xenc:EncryptedData/dsig:KeyInfo/xenc:EncryptedKey/xenc:CipherData/xenc:CipherValue: Chave de sessão criptografada com a Chave Pública

xenc:EncryptedData/xenc:CipherData/xenc:CipherValue : Mensagem criptografada com a Chave de Sessão ;

Esses campos supracitados serão necessários para a criptografia da mensagem JSON também, uma vez que será utilizado o mesmo princípio.


O Formato JSONx

O DataPower® não transforma diretamente a mensagem XML em JSON, ou seja, o DataPower® converte em JSON somente mensagens XML que estão no formato JSONx, ou seja, o JSONx é um formato auxiliar que é necessário para converter JSON para XML, de acordo com a figura 13:

Figura 13: Processo de Transformação da mensagem XML para JSON.

Portanto existem 3 (três) etapas para a conversão de XML para JSON, passando necessariamente pela etapa de conveter de XML para JSONx ( que também é um XML mas em um formato específico, para saber mais leia esse artigo http://publib.boulder.ibm.com/infocenter/wsdatap/v3r8m1/index.jsp?topic=%2Fxs40%2Fconvertingbetweenjsonandjsonx06.htm )

Com isso devemos transformar a mensagem XML criptografada em JSONx.

Para fazer essa transformação será utilizada uma Transform Action, que contém um arquivo XSL (criado pelo desenvolvedor, usando um editor de sua preferência - nossa sugestão é o Rational Application Developer http://www-142.ibm.com/software/products/us/en/application/ ). Nesse arquivo serão usadas as tags do XML Encryption (citadas anteriormente), porém com outros nomes, somente para facilitar o procedimento, os campos da mensagem JSON serão os seguintes:

MetodoChaveSessao :guardará o algoritmo usado na criptografia da Mensagem (a partir da tag) xenc:EncryptedData/xenc:EncryptionMethod);

MetodoChavePublica : guardará o algoritmo usado na criptografia da chave de sessão ( a partir da tag /xenc:EncryptedData/dsig:KeyInfo/xenc:EncryptedKey/xenc:EncryptionMethod);

Chave :Chave de sessão criptografada com a Chave Pública ( a partir da tag /xenc:EncryptedData/dsig:KeyInfo/xenc:EncryptedKey/xenc:CipherData/xenc:CipherValue) ;

Body : Mensagem criptografada com a Chave de Sessão ( a partir da tag xenc:EncryptedData/xenc:CipherData/xenc:CipherValue);

O arquivo XSL terá a seguinte composição:

<xsl:stylesheet xmlns:dp="http://www.datapower.com/extensions"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" 
 xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
 xsi:schemaLocation="http://www.datapower.com/schemas/json jsonx.xsd"
 xmlns:xsi="http://www.w3.org/2001/XMLchema-instance"
 xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx"
 extension-element-prefixes="dp" exclude-result-prefixes="dp"
 version="1.0">
 <xsl:template match="/">
        
     <json:object>  
          <json:object name="Message">
              <json:string name="MetodoChaveSessao">
                  <xsl:variable name="MetodoChaveSessao" 
                  select="/xenc:EncryptedData/xenc:EncryptionMethod" />
                  <xsl:value-of select="$MetodoChaveSessao/@Algorithm" />
              </json:string>                      
              <json:string name="MetodoChavePublica">
                  <xsl:variable name="MetodoChavePublica" 
                  select="/xenc:EncryptedData/dsig:KeyInfo/
                  xenc:EncryptedKey/xenc:EncryptionMethod" />
                  <xsl:value-of select="$MetodoChavePublica/@Algorithm" />
              </json:string>
                    
              <json:string name="Chave">
                  <xsl:variable name="ChavePublica" 
                  select="/xenc:EncryptedData/dsig:KeyInfo/
                  xenc:EncryptedKey/xenc:CipherData/xenc:CipherValue" />
                  <xsl:value-of select="$ChavePublica" />
                 </json:string>
              <json:string name="Body">
                  <xsl:variable name="Body" 
                  select="/xenc:EncryptedData/xenc:CipherData/xenc:CipherValue" />
                  <xsl:value-of select="$Body" />
              </json:string>                    
          </json:object>
       
      </json:object>
   </xsl:template>
</xsl:stylesheet>

O nome que daremos ao arquivo será jsonCrypto.xsl.

O processo de inclusão do Transform Action no Pipeline é dividido da seguinte maneira:

Primeiramente arrastamos a Transform Action para Pipeline :

Figura 14: Configuração do Transform Action.

Clique aqui para vizualizar a figura 14 em tamanho maior.

Após isso clicar duas vezes sobre a Action, será aberta a tela de configuração da Action, e por fim incluir o arquivo XSL no nosso caso terá o nome jsonCrypto.xsl.

Figura 15: Inclusão arquivo jsonCrypto.xsl no Transform Action.

Clique aqui para vizualizar a figura 15 em tamanho maior.

Após a mensagem passar por essa transformação, a mesma deverá ter o

seguinte formato:

Figura 16: Mensagem XML no formato JSONx.

Clique aqui para vizualizar a figura 16 em tamanho maior.

Depois dessa transformação no formato JSONx, a mensagem efetivamente será convertida para JSON, para isso será efetuada outra transformação, porém o arquivo XSL que efetua esse procedimento não será criado, o arquivo será importado através da pasta store e seu nome é JSONX2JSON.XSL, esse arquivo será associado a uma Transform Action. Conforme a figura 17:

Figura 17: Configuração do Transform Action para conversão de XML para JSON.

Clique aqui para vizualizar a figura 17 em tamanho maior.

O Fluxo deve ficar dessa maneira:

Figura 18: Fluxo de Criptografia JSON.

Clique aqui para vizualizar a figura 18 em tamanho maior.

  1. Match Action: Responsável por determinar se a mensagem vai entrar nesse fluxo;
  2. Converte Query Params to XML: converte a mensagem JSON em XML (JSONx);
  3. Crypto Action: criptografa a mensagem no formato XML Encryption;
  4. Transform Action: transforma a mensagem XML criptografada em XML JSONx;
  5. Transform Action: Transforma a mensagem JSONx em JSON;
  6. Result Action: representa fim do fluxo.

Vamos ver na prática o Fluxo funcionando, iremos efetuar uma chamada a partir de um navegador:

Figura 19: Chamada JSON através da barra de endereços de um navegador.

Para ver a mensagem, devemos clicar em Show Probe:

Figura 20: Ativando Probe.

Após exibir a tela das mensagem, basta clicar em uma das transações que serão exibidas as mensagens que foram recebidas no DataPower®. Basta clicar na primeira lupa da transação:

Figura 21: Mensagem Recebida no DataPower®.

Clique aqui para vizualizar a figura 21 em tamanho maior.

Agora veremos como o DataPower® converteu de JSON para XML:

Figura 22: Mensagem Convertida de JSON para XML no DataPower®.

Clique aqui para vizualizar a figura 22 em tamanho maior.

Depois que a mensagem foi transformada para XML, o próximo passo foi criptografar a mensagem, através da Crypto Action.

Figura 23: Mensagem XML criptografada.

Clique aqui para vizualizar a figura 23 em tamanho maior.

Após a criptografia da Mensagem, foi feita uma transformação XSL na mensagem preparando-a para a conversão no formato JSON.

Figura 24: Mensagem XML preparada para o Formato JSON.

Clique aqui para vizualizar a figura 24 em tamanho maior.

Por fim a mensagem é convertida para JSON, através do arquivo JSONX2JSON.XSL.

Figura 25: Mensagem JSON Criptografada no DataPower®.

Por fim, essa é a resposta que o DataPower® envia para o navegador.

Figura 26: Mensagem JSON Criptografada no navegador web.

Clique aqui para vizualizar a figura 26 em tamanho maior.


Descriptografando mensagens JSON no DataPower®

Agora vamos trabalhar em um segundo cenário em que o DataPower® recebe a mensagem JSON criptografada e tem o papel de Client que irá descriptografar a mesma. O procedimento segue o mesmo princípio da criptografia da mensagem , com os passos de conversão para XML, conversão para XML Encryption, descriptografia e por fim conversão para JSON.

Figura 27: Fluxo de descriptografia de mensagens JSON.

O fluxo deverá ter a seguinte composição:

Figura 28: Fluxo de descriptografia de mensagens JSON no DataPower®.

Clique aqui para vizualizar a figura 28 em tamanho maior.

  1. Match Action: responsável por determinar se a mensagem vai entrar nesse fluxo ou não;
  2. Convert Query Params to XML: converte a mensagem JSON para XML;
  3. Transform Action: Transforma a mensagem no padrão XML Encryption para ser descriptografada;
  4. Decrypt Action: irá descriptografar a mensagem
  5. Transform Action: Converte a mensagem de XML para JSON;
  6. Result Action: Indica o final do fluxo

Convertendo de JSON para XML

Primeiramente vamos converter a mensagem de JSON criptografada para XML, com a Convert Query Params to XML. Esse procedimento é igual ao efetuado no processo de criptografia da mensagem, basta efetuar o procedimento efetuado na Figura 7: Configuração da Action Convert Query Params to XML


Transformando a mensagem no padrão XML Encryption

Depois que a mensagem foi convertida de JSON para XML, o próximo passo é transformar a mensagem no padrão XML Encryption. Esse passo é necessário, pois a partir dessa transformação, poderemos descriptografar a mensagem XML com a chave privada, através de uma Decrypt Action, ou seja, quando a mensagem é convertida de JSON para XML ela fica no padrão JSONx, e por isso ela não é descriptografada diretamente. O arquivo XSL que será responsável por montar a mensagem XML no Padrão XML Encryption terá a seguinte composição, (o mesmo deverá ser criado pelo usuário):

<xsl:stylesheet xmlns:dp="http://www.datapower.com/extensions"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" 
    xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
    xsi:schemaLocation="http://www.datapower.com/schemas/json jsonx.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx"
    extension-element-prefixes="dp" exclude-result-prefixes="dp"
    version="1.0">
    <xsl:template match="/">
<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
Type="http://www.w3.org/2001/04/xmlenc#Element">
        <xsl:element name="xenc:EncryptionMethod">
            <xsl:attribute name="Algorithm">
                <xsl:value-of select="/json:object/json:object/*[1]"/>
            </xsl:attribute>
        </xsl:element>
            
        <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
            <xenc:EncryptedKey Recipient="name:chavepublica">
                    
                <xsl:element name="xenc:EncryptionMethod">
                    <xsl:attribute name="Algorithm">
                        <xsl:value-of select="/json:object/json:object/*[2]"/>
                    </xsl:attribute>
                </xsl:element>

                <xenc:CipherData>
                    <xenc:CipherValue><xsl:value-of 
                    select="/json:object/json:object/*[3]"/></xenc:CipherValue>
                </xenc:CipherData>
            </xenc:EncryptedKey>
        </dsig:KeyInfo>
        <xenc:CipherData>
            <xenc:CipherValue><xsl:value-of 
            select="/json:object/json:object/*[4]"/></xenc:CipherValue>
        </xenc:CipherData>
    </xenc:EncryptedData>
  </xsl:template>
</xsl:stylesheet>

Descriptografando a mensagem XML

Após a etapa de transformação da mensagem, será usada uma Decrypt Action, que será responsável por descriptografá-la.

Vamos as configurações da Decryption Action.

Figura 29: Inclusão do Decryption Action no Pipeline

Após incluir a Decryption Action no Pipeline, o próximo passo é fazer a configuração da mesma, para isso, basta clicar duas vezes sobre o seu ícone:

Figura 30: Configuração do Decryption Action.

Clique aqui para vizualizar a figura 30 em tamanho maior.

O Campo Decrypt Key está relacionado a chave privada que deve ser usada para descriptografar a mensagem.


Convertendo a mensagem de JSON PARA XML

E por fim o arquivo XSL JSONX2JSON.XSL que converte de XML para JSON, conforme a Figura 17: Configuração do Transform Action para conversão de XML para JSON.

Veremos agora como a mensagem JSON chegará ao DataPower® e será descriptografada. Para visualizar a mensagem, basta seguir o mesmo procedimento informado na Figura 20.

A figura 31 mostra a mensagem JSON chegando criptografada no DataPower®

Figura 31: Mensagem JSON criptografada chegando no DataPower® .

Depois que a mensagem chegou ao DataPower®, o primeiro passo é transformá-la em XML para ser descriptografada, essa atividade é feita pela Convert Query Param to XML.

Figura 32: Mensagem JSON criptografada em formato XML.

Clique aqui para vizualizar a figura 32 em tamanho maior.

O Próximo passo é transformar a mensagem XML no formato XML Encryption. Para isso será usada a Transform Action, a mensagem ficará da

seguinte maneira:

Figura 33: Mensagem criptografada em formato XML Encryption.

Clique aqui para vizualizar a figura 33 em tamanho maior.

Após a mensagem estar no formato XML Encrypt o próximo passo é descriptografá-la com a Decrypt Action, ficando com o seguinte resultado:

Figura 34: Mensagem XML descriptografada.Figura 35: Mensagem JSON descriptografada.

Clique aqui para vizualizar a figura 34 em tamanho maior.

Por fim, a mensagem será transformada novamente em JSON, através do arquivo JSONX2JSON.XSL.

Figura 26: Mensagem JSON descriptografada.
Figura 35: Mensagem JSON descriptografada.

Com isso o processo de criptografia e descriptografia de mensagens JSON foi efetuado através do DataPower®.

Nos fluxos tanto de criptografia quanto o de descriptografia, toda a codificação de criptografia, transformação da mensagem XML para JSON pode ser feito em um único XSL, o autor do artigo preferiu separar em actions diferentes para poder explicitar o processo de criptografia.

No artigo foi abordado o padrão XML Encryption, porém pode ser feito com outros padrões como o WS-Security, baseado em mensagens SOAP, por exemplo.


Conclusão

Concluímos que não há um padrão de segurança para mensagens JSON disponível no mercado, diferentemente de mensagens XML que possui o XML Encryption e o WS-Security. Para satisfazer essa necessidade, o DataPower® trabalha no gerenciamento de mensagens JSON e consegue usar um modelo similar ao XML Encryption , ou seja, através do DataPower® conseguimos implementar segurança em mensagens JSON, fazendo criptografia assimétrica, com chaves privadas e públicas, e esse modelo de segurança pode ser importante na transmissão de mensagens JSON entre ambientes corporativos.

O DataPower® surge com uma boa alternativa para a implementação de segurança em mensagens JSON, além da criptografia, a assinatura de mensagens JSON pode ser implementada no DataPower®, que será abordado em outra oportunidade.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que acessar o developerWorks, um perfil será criado para você. Informações do seu perfil (tais como: nome, país / região, e empresa) estarão disponíveis ao público, que poderá acompanhar qualquer conteúdo que você publicar. Seu perfil no developerWorks pode ser atualizado a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=WebSphere
ArticleID=847849
ArticleTitle=Criptografando mensagens JSON like XML Encryption com WebSphere® DataPower® SOA Appliance.
publish-date=11292012