Webservice-Sicherheit erkunden

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 2 Minuten Lesedauer
  • Erzwingen Sie Sicherheit mit Standardauthentifizierung, gegenseitiger Authentifizierung oder WS-Security.

    Standardauthentifizierung

    Um die Standardauthentifizierung bei jeder Anforderung für ein WSDL-Dokument oder beim Veröffentlichen von SOAP-Nachrichten zu erzwingen, können Sie die Eigenschaft glide.basicauth.required auf truefestlegen. In diesem Fall muss jede WSDL- oder SOAP-Anforderung den Header „Autorisierung“ enthalten, wie im Standardauthentifizierungsprotokoll angegeben. Da die Anforderung nicht interaktiv ist, ist der Autorisierungs -Header während einer Anforderung immer erforderlich.

    Die Bereitstellung von Informationen für die Standardauthentifizierung hat unabhängig davon, ob sie erforderlich sind oder nicht, den Vorteil, dass die Daten, die infolge des Aufrufs des Webservice erstellt oder aktualisiert werden, im Namen des Benutzers erstellt werden, der in den Anmeldeinformationen für die Standardauthentifizierung angegeben ist. Beispiel: Beim Erstellen eines Incident-Datensatzes enthalten die Journalfelder die Anwender-ID des standardmäßigen authentifizierten Anwenders anstelle des standardmäßigen Gastanwenders.

    Damit der Autorisierungsheader die Kapitalisierungsregeln ignoriert, verwenden Sie die Eigenschaft glide.security.script.include.name.case.insensitive.list. 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 weist diese Eigenschaft die folgenden Werte auf:
    • 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 Anmeldeinformationsobjekt 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 >