2016-07-11 15 views
1

Mit play-ws 2.4.6 und dem NingWSClient, ist es möglich den Realm im Authentication Header zu setzen? Ich versuche, die REST 1.0-API von NetSuite zu treffen, für die der OAuth-Realmparameter festgelegt werden muss.Spielen Scala WS Oauth 1.0 - Wie Realm oauth Parameter einstellen?

Hier ist ein Beispielcode Ich bin derzeit mit:

val requestToken = RequestToken("*****", "*****") 
val consumerKey = ConsumerKey("*****", "*****") 
val oauthCalc = OAuthCalculator(consumerKey, requestToken) 

val request: WSRequest = ws.url("https://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=554&deploy=1") 
    .withHeaders("Content-Type" -> "application/json").sign(oauthCalc) 
request.get() 

Netsuite erkennt nicht die OAuth Anfrage ohne Reich, Reporting: user_error Header nicht NLAuth Schema ist. Mit der Postman-Rest-App konnte ich denselben Fehler von NetSuite reproduzieren, wenn kein Realm zur Verfügung steht. Beim Hinzufügen des Bereichs im Postboten wurde die Anfrage erfolgreich ausgeführt.

+0

Oauth 1 oder 2? Außerdem denke ich, dass Sie den Bereich manuell als Teil des 'Authorization'-Headers – TonyH

+0

Oauth 1.0 festlegen können. Wenn Sie den Bereich manuell im Autorisierungsheader festlegen, überschreibt die Methode .sign den Autorisierungsheader und fügt diesen nicht an. Ich konnte dieses Problem umgehen, indem ich die HMAC-SHA1-Signatur selbst erstellte und den Berechtigungsheader manuell erstellte, anstatt die .sign-Methode zu verwenden. – awells

Antwort

0

Ich konnte dieses Problem umgehen, indem ich die HMAC-SHA1-Signatur selbst erstellte und den Berechtigungsheader manuell erstellte, anstatt die .sign-Methode zu verwenden.

+0

Ich bin neugierig, wenn Sie jemals herausgefunden haben, wie man den Bereich hinzufügen kann, ohne den Header manuell zu erstellen? – shuttj

+0

Ja, ich habe die OAuthCalculator- und OAuthSignatureCalculator-Klassen erweitert, sodass ihnen ein Realm-Parameter übergeben werden konnte. Anschließend können Sie im OAuthSignatureCalculator die Methode calculateAndAddSignature überschreiben, sodass Sie den Realm-Header an die Zeichenfolge headerValue anhängen können. Ich musste die private constructAuthHeader-Methode von OAuthSignatureCalculator neu schreiben, damit ich sie in meinem erweiterten OAuthSignatureCalculator verwenden konnte. – awells