Autenticação no Header - Webservice SOAP

Alguém já usou a chave SECURITY=1 em um webservice SOAP para ativar a autenticação ?

Se sim, como criamos o usuário e senha e onde informamos isso no consumo do método?

Adriano,

O usuário para autenticação no SOAP é o usuário do Protheus, assim como no REST, basta então cadastrar o usuário no SIGACFG (Configurador).

Para realizar a autenticação, você deve informar no header da sua requisição SOAP, a informação de autenticação (Authorization), sendo que hoje o SOAP só autentica via BASIC.


Abaixo um exemplo de consumo de SOAP com autenticação em ADVPL:


//-------------------------------------------------------------------
/*{Protheus.doc} u_SoapTest
Teste de consumo de serviço SOAP do Protheus

@author Daniel Mendes
@since 24/09/2020
@version 1.0
*/
//-------------------------------------------------------------------
function u_SoapTest()
local oWsdl as object

oWsdl := TWsdlManager():New()
oWsdl:lVerbose := .T.

//Verifica o endereço, se existe algum serviço disponível e se existe o serviço que quero utilizar
if !oWsdl:ParseURL("http://localhost:8080/ws/FWDICTIONARY.apw?WSDL") .Or. Empty(oWsdl:ListOperations()) .Or. !oWsdl:SetOperation("GETTABLELIST")
    ConErr(oWsdl:cError)
else
    //Informo o usuário e senha via basic em base64 no header da requisição
    oWsdl:AddHttpHeader("Authorization", "Basic " + Encode64("admin:1"))

    //Informa o valor do primeiro parâmetro do serviço que vou consumir
    oWsdl:SetValue(0, "SED")

    //Consumo o serviço
    if !oWsdl:SendSoapMsg()
        ConErr(oWsdl:cError)
    endif

    //Exibo no console o valor da resposta do serviço
    ConOut("GetSoapResponse:", oWsdl:GetSoapResponse())
endif

FreeObj(oWsdl)
oWsdl := nil

return

Obrigado pela ajuda Daniel!!!