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 lors d’une demande.
La fourniture d’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 ont l’ID utilisateur de l’utilisateur authentifié de base, au lieu de l’utilisateur invité par défaut.
- BasicAuth
- Authentification personnalisée
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 les éléments suivants 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 résultante 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 >