Exploration de la sécurité des services Web
Appliquez la sécurité à l’aide de l’authentification de base, de l’authentification réciproque ou de WS-Security.
Authentification de base
Pour appliquer l’authentification de base à chaque demande de document WSDL ou validation de messages SOAP, vous pouvez définir la propriété glide.basicauth.required sur true. Dans ce cas, chaque requête WSDL ou SOAP devra contenir l’en-tête « Autorisation » tel que spécifié dans le protocole d’authentification de base . Étant donné que la demande n’est pas interactive, l’en-tête d’autorisation est toujours requis au cours 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’appel du service Web sont effectuées pour le compte 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 journal affichent l’ID d’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 par rapport à 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 ) { } - Lors de l’utilisation de 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 None par Basic :<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 qui en résulte lorsque l’authentification de base est activée et qu’aucune information d’identification n’est fournie ressemble à ce qui suit :<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 >