Webservice-Sicherheit erkunden
Erzwingen Sie die Sicherheit mithilfe von Standardauthentifizierung, gegenseitiger Authentifizierung oder WS-Security.
Standardauthentifizierung
Um die Standardauthentifizierung für jede Anforderung eines WSDL-Dokuments 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 Bereitstellung von Informationen zur Standardauthentifizierung, unabhängig davon, ob sie erforderlich sind 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 Basisanwenders anstelle des Standardwerts Gast Anwender.
- BasicAuth
- Anwenderdefinierte Authentifizierung
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 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 dem folgenden, und ändern Sie es Keine Bis Standard :<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 SubDie 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 : 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 >