Esta classe tem como objetivo disponibilizar um mecanismo seguro de armazenamento de chaves secretas. Não é possível recuperar o conteúdo armazenado no cofre, porém é possível conferir se um valor informado está correto.

Somente o método ou função que originou o registro poderá alterar ou excluir um par de chave e valor, porém poderá ser conferida de qualquer fonte.

Requisitos:

Esta classe estará disponível na LIB de versão igual ou superior à 20210405.

Versão mínima necessária do appserver para a utilização da classe é 17.3.0.15.

Realease do protheus igual ou superior a 12.1.23.


Métodos:

Put

Sintaxe:

FwSecretVault():Put( cID, cValue )

Descrição:

Registra um par de chave e valor. Ao informar um valor que já exista na base, este será substituído pelo novo.  Somente o método ou função que originou o registro consegue alterá-lo. 

Como a cahve é única para o sistema, recomendamos o uso de identificadores nas chaves ( ex: framework_meuId, gpe_senha_do_portal ) 

Parâmetro

Tipo

Descrição

Obrigatório

cID

Caracter

Identificador do registro que será armazenado

x

cValue

Caracter

Valor a ser armazenado.

x

Retorno:

Se verdadeiro, indica que conseguiu guardar o registro


Importante!!!

O Id informado NÃO é exclusivo para o fonte/função utilizado. Se o mesmo Id for informado em um fonte/função diferente, poderá existir um conflito.

fonte1.prw
User Function teste1()

    Local cSenha:= 'minhasenha'
    Local cID      	:= 'MeuID'
    Local cDataRet	 := ""
    Local lSucesso := .T.
	Local oVault   := FwSecretVault():New()

    lSucesso := oVault:Put(cID, cSenha) // retorno .T.
 
return

User Function teste2()
	Local cSenha:= 'minhasenha'
    Local cID      	:= 'MeuID'
    Local cNovaSenha:= "novasenha"
    Local lSucesso := .T.
	Local oVault   := FwSecretVault():New()
    
    lSucesso := oVault:Put(cID, cNovaSenha) // retorno .F., pois já foi cadastrado
    lSucesso := oVault:Delete(cID)  // retorno .F., pois só pode ser deletado por outro fonte.
    lSucesso := oVault:Check(cID, cNovaSenha) // retorno .F., pois a senha cadastrada é outra
    lSucesso := oVault:Check(cID, cSenha) // retorno .T., pois a senha cadastrada foi essa
 
return

Check

Sintaxe:

FwSecretVault():Check( cID, cValue)

Descrição:

Confere se o par chave e valor informado é o mesmo que já foi cadastrado anteriormente.  Não há restrição de origem da chamada para conferir uma chave.

Parâmetro

Tipo

Descrição

Obrigatório

cID

Caracter

Identificador do registro que foi armazenado

x

cValue

Caracter

Valor a ser conferido.

x

Retorno:

Conteúdo armazenado. Retorna uma string vazia ("") caso não encontre o ID.


Delete

Sintaxe:

FwSecretVault():Delete( cID)

Descrição:

Método responsável por deletar um par chave e valor que foi armazenado. Somente o método ou função que originou o registro consegue deletá-lo.

Parâmetro

Tipo

Descrição

Obrigatório

cID

Caracter

Identificador do registro que será deletado

x


Retorno:

Se verdadeiro, indica que conseguiu  remover o registro.



Exemplo
User Function TstSecretVault()

    Local cPass  	:= 'meu valor secreto com acentuação'
    Local cID      	:= 'MeuID'
    Local lSucesso  := .F. 
	Local oVault := FwSecretVault():New()
    
    lSucesso := oVault:Put(cID, cPass) // lSucesso := .T.
    lSucesso := oVault:Check(cID, cPass) // lSucesso := .T.
	lSucesso := oVault:Check(cID, "senhaerrada") // lSucesso := .F.
    lSucesso := oVault:Delete(cID) // lSucesso := .T.
    lSucesso := oVault:Check(cID) // lSucesso := .F., o registro já foi deletado
 
return