Découvrir la sécurité des services Web
Appliquez la sécurité à l’aide de l’authentification de base, de l’authentification réciproque ou de la sécurité WS.
Authentification de base
Pour appliquer l’authentification de base à chaque demande de document WSDL ou de publication de messages SOAP, vous pouvez définir la propriété glide.basicauth.required sur true. Dans ce cas, chaque demande WSDL ou SOAP doit contenir l’en-tête « Autorisation » comme spécifié dans le protocole d’authentification de base . Étant donné que la demande n’est pas interactive, l’en-tête Authorization est toujours requis au cours d’une demande.
Fournir des informations d’authentification de base, qu’elles soient requises ou non, présente l’avantage supplémentaire que les données créées ou mises à jour à la suite de l’invocation du service Web sont effectuées au nom de l’utilisateur fourni dans les informations d’identification d’authentification de base. Par exemple, lors de la création d’un enregistrement d’incident, les champs de journal utilisent l’ID d’utilisateur de l’utilisateur authentifié de base au lieu de l’utilisateur invité par défaut.
- BasicAuth
- CustomAuth
sub SOAP :: Transport :: HTTP :: Client :: get_basic_credentials { return 'user_name' => 'password' ; }
- Lorsque vous utilisez C# .NET VS 2005 ou une version antérieure, vous pouvez tirer parti de l’objet Informations d’identification, par exemple :
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 ) { } - Lorsque vous utilisez C# .NET VS 2008, vous pouvez tirer parti de l’objet ClientCredentials, par exemple :
Demo_Incident. ServiceNowSoapClient client = new Test08WebService . Demo_Incident . ServiceNowSoapClient ( ) ; client . ClientCredentials . UserName . UserName = "admin" ; client . ClientCredentials . UserName . Password = "admin" ;Ensuite, dans votre fichier app.config, recherchez ce qui suit et remplacez Aucun par Basique :<transport clientCredentialType= "None" proxyCredentialType= "None" realm= "" /> - Lors de l’utilisation de VB .NET, tirer parti de l’objet Informations d’identification ressemblerait à ce qui suit :
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 SubLa réponse obtenue lorsque l’authentification de base est activée et qu’aucune information d’identification n’est fournie ressemble à ceci :<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 >