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?
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!!!
Bom dia!
Daniel, a autenticação só esta aceitando o usuario padrão Admin, qualquer outro ele não aceita, o que pode ser?
Estou utilizando o PostMan com autenticação básica.
Bom dia!
Adriano como você conseguiu resolver esse problema, estou com a mesma situação, na verdade aqui só da certo com o usuario admin, qualquer outro não funciona, mesmo sendo administrador.