Webservice-Sicherheit erkunden

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 2 Minuten Lesedauer
  • Erzwingen Sie die Sicherheit mithilfe von Standardauthentifizierung, gegenseitiger Authentifizierung oder WS-Sicherheit.

    Standardauthentifizierung

    Um die Standardauthentifizierung bei jeder Anforderung für ein WSDL-Dokument oder das Veröffentlichen von SOAP-Nachrichten zu erzwingen, können Sie die Eigenschaft festlegen glide.basicauth.requiredBis Wahr . Wenn Sie dies tun, muss jede WSDL- oder SOAP-Anforderung den Header „Autorisierung“ enthalten, wie in angegeben Standardauthentifizierung protokoll. Da die Anforderung nicht interaktiv ist, wird Autorisierung Header ist während einer Anforderung immer erforderlich.

    Die Angabe von Informationen zur Standardauthentifizierung, 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 wurden, im Namen des Anwenders erfolgen, der in den Anmeldeinformationen für die Standardauthentifizierung angegeben ist. Beispiel: Beim Erstellen eines Incident-Datensatzes haben die Journalfelder die Anwender-ID des authentifizierten Basis-Anwenders anstelle des Standards Gast Anwender.

    Damit der Autorisierungsheader die Kapitalisierungsregeln ignoriert, verwenden Sie glide.security.script.include.name.case.insensitive.listEigenschaft. Sie können diese Eigenschaft in der Tabelle „Systemeigenschaften“ [sys_properties] ändern und die Skripteinbindungen hinzufügen, die zum Verarbeiten der Authentifizierung erforderlich sind. Standardmäßig hat diese Eigenschaft diese Werte:
    • BasicAuth
    • Anwenderdefinierte Authentifizierung
    Fügen Sie nach Bedarf weitere Skripteinbindungen hinzu.
    Um die Standardauthentifizierung bei Verwendung von Perl und den 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 ) { }
    • Bei Verwendung von C# .NET VS 2008 können Sie das ClientAnmeldeinformationen-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 Folgendes, und ändern Sie es Keine Bis Standard :
      <transport clientCredentialType= "None" proxyCredentialType= "None" realm= "" />
    • Bei Verwendung von VB .NET würde die Nutzung des Anmeldeinformationsobjekts wie folgt 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 Standardauthentifizierung 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 >