Exploration de la sécurité des services Web

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 3 minutes de lecture
  • 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 d’un document WSDL ou d’une publication 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.

    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’appel de 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.

    Pour que l’en-tête d’autorisation ignore les règles de capitalisation, utilisez la glide.security.script.include.name.case.insensitive.list propriété. Vous pouvez modifier cette propriété dans la table Propriétés système [sys_properties] et ajouter les includes de script nécessaires au traitement de l’authentification. Par défaut, cette propriété comporte les valeurs suivantes :
    • BasicAuth
    • Authentification personnalisée
    Ajoutez d’autres includes de script si nécessaire.
    Pour fournir une authentification de base lors de l’utilisation de Perl et des bibliothèques SOAP ::Lite, vous pouvez implémenter la fonction suivante :
    sub SOAP :: Transport :: HTTP :: Client :: get_basic_credentials { return 'user_name' => 'password' ; }
    • Lors de l’utilisation de 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 ce qui suit et remplacez None par Basic :
      <transport clientCredentialType= "None" proxyCredentialType= "None" realm= "" />
    • Lors de l’utilisation de VB .NET, l’utilisation 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 Sub
      La réponse qui en résulte, 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&nbsp;: black;}   A.name {color&nbsp;: black;}   HR {color&nbsp;: #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 >