Explorar a segurança de serviços da web
Aplique a segurança usando autenticação básica, autenticação mútua ou WS-Security.
Autenticação básica
Para impor a autenticação básica a cada solicitação de um documento WSDL ou publicação de mensagens de SOAP, é necessário definir a propriedade glide.basicauth.required como verdadeira. Se você fizer isso, cada solicitação WSDL ou SOAP terá que conter o cabeçalho "Autorização", conforme especificado no protocolo Autenticação básica. Uma vez que a solicitação não é interativa, o cabeçalho Autorização é sempre necessário durante uma solicitação.
O fornecimento de informações de autenticação básica, necessárias ou não, tem a vantagem adicional de que os dados criados ou atualizados como resultado da invocação do serviço Web são feitos em nome do usuário fornecido nas credenciais de autenticação básica. Como exemplo, ao criar um Registro de incidente, os campos de diário têm a ID do usuário autenticado básico, em vez do usuário Convidado padrão.
- BasicAuth
- CustomAuth
sub SOAP :: Transport :: HTTP :: Client :: get_basic_credentials { return 'user_name' => 'password' ; }
- Ao usar o C# .NET versão 2005 ou anterior, é possível aproveitar as vantagens do objeto Credenciais, por exemplo:
System.Net . ICredentials cred = new System.Net . NetworkCredential ( "user_name", "password" ) ; service . ServiceNow proxy = new service . ServiceNow ( ) ; service . get getService = newservice . get ( ) ; service . getResponse getServiceResponse = new service . getResponse ( ) ; try { proxy . Credentials = cred ; getService . sys_id = "bf522c350a0a140701972dbf876f1610" ; getServiceResponse = proxy . get (getService ) ; catch (Exception ex ) { } - Ao usar o C# .NET versão 2008, é possível aproveitar as vantagens do objeto ClientCredenciais, por exemplo:
Demo_Incident. ServiceNowSoapClient client = new Test08WebService . Demo_Incident . ServiceNowSoapClient ( ) ; client . ClientCredentials . UserName . UserName = "admin" ; client . ClientCredentials . UserName . Password = "admin" ;Em seguida, no arquivo app.config, procure o seguinte e altere Nenhum para Básico:<transport clientCredentialType= "None" proxyCredentialType= "None" realm= "" /> - Ao usar o VB .NET, aproveitar as vantagens do objeto Credenciais seria algo como:
Sub Main() Dim cred As New System.Net.NetworkCredential( "user_name", "password") Dim proxy As New VB_Democm.incident.ServiceNow Dim getIncident As New VB_Democm.incident. get Dim getResponse As New VB_Democm.incident.getResponse proxy.Credentials = cred getIncident.sys_id = "[your sysID here]" getResponse = proxy. get(getIncident) End SubA resposta resultante quando a autenticação básica é ativada e nenhuma credencial é fornecida é algo como:<html> <head > <title >Apache Tomcat/5.0.28 - Error report </ title > <style > <!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} A {color : black;} A.name {color : black;} HR {color : #525D76;}--> </ style > </ head > <body > <h1 >HTTP Status 401 -\ </ h1 > <HR size = "1" noshade = "noshade" > <p >< b >type </ b > Status report </ p > <p >< b >message </ b > <u >< / u >< / p > <p >< b >description </ b > <u >This request requires HTTP authentication (). </ u >< / p > <HR size = "1" noshade = "noshade" > <h3 >Apache Tomcat/5.0.28 </ h3 > </ body > </ html >