Sicherheit von Webservices erkunden

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 2 Minuten Lesedauer
  • Erzwingen Sie Sicherheit mithilfe von Basic Authentication, gegenseitiger Authentifizierung oder WS-Security.

    Standardauthentifizierung

    Um die Basic Authentication bei jeder Anforderung für ein WSDL-Dokument oder beim Senden von SOAP-Nachrichten zu erzwingen, können Sie die Eigenschaft glide.basicauth.required auf truesetzen. In diesem Fall muss jede WSDL- oder SOAP-Anforderung die Autorisierungskopfzeile enthalten, wie im Standardauthentifizierungsprotokoll angegeben. Da die Anforderung nicht interaktiv ist, ist die Autorisierungskopfzeile immer während einer Anforderung erforderlich.

    Die Bereitstellung von Basic Authentication-Informationen, unabhängig davon, ob dies erforderlich ist oder nicht, hat den zusätzlichen Vorteil, dass die Daten, die als Ergebnis des Webservice-Aufrufs erstellt oder aktualisiert werden, im Namen des Benutzers ausgeführt werden, der in den Basic Authentication-Anmeldeinformationen angegeben ist. Beispiel: Beim Erstellen eines Incident-Datensatzes enthalten die Journalfelder die Benutzer-ID des authentifizierten Standardbenutzers anstelle des Standardbenutzers Gast.

    Verwenden Sie die Eigenschaft glide.security.script.include.name.case.insensitive.list, damit der Autorisierungsheader die Kapitalisierungsregeln ignoriert. Sie können diese Eigenschaft in der Tabelle „Systemeigenschaften“ [sys_properties] ändern und die Skripteinbindungen hinzufügen, die für die Verarbeitung der Authentifizierung erforderlich sind. Standardmäßig hat diese Eigenschaft die folgenden Werte:
    • BasicAuth
    • CustomAuth
    Fügen Sie nach Bedarf weitere Skripteinbindungen hinzu.
    Um die Basic Authentication bei Verwendung von Perl und der SOAP::Lite-Bibliotheken bereitzustellen, können Sie die folgende Funktion implementieren:
    sub SOAP :: Transport :: HTTP :: Client :: get_basic_credentials { return 'user_name' => 'password' ; }
    • Wenn Sie C# .NET VS 2005 oder älter verwenden, können Sie das Objekt „Anmeldeinformationen“ nutzen, z. B.:
      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 ) { }
    • Wenn Sie C# .NET VS 2008 verwenden, können Sie das ClientCredentials-Objekt nutzen, z. B.:
      Demo_Incident. ServiceNowSoapClient client  = new Test08WebService . Demo_Incident . ServiceNowSoapClient ( ) ;
      client . ClientCredentials . UserName . UserName = "admin" ;
      client . ClientCredentials . UserName . Password = "admin" ;
      Suchen Sie dann in Ihrer Datei app.config nach Folgendem, und ändern Sie None in Basic:
      <transport clientCredentialType= "None" proxyCredentialType= "None" realm= "" />
    • Bei der Verwendung von VB .NET würde das Objekt „Anmeldeinformationen“ folgendermaßen aussehen:
      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
      Die resultierende Antwort, wenn die Basic Authentication aktiviert ist und keine Anmeldeinformationen angegeben werden, sieht folgendermaßen aus:
      <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 >