2016-08-02 36 views
0

Ich stelle normalerweise keine Fragen hier, weil die meisten Male ich Antworten finden kann. Aber in diesem Moment habe ich keinen gefunden, und ich bin wirklich festgefahren. Ich habe ein Problem beim Versuch, Zugangstoken für die Cherwell API zu erhalten: http://13.88.176.216/CherwellAPI/Swagger/ui/index#!/Service/Service_Token Ich verwendete Briefträger, um diesen Code zu generieren:RestSharp Oauth2 Authentifizierung Cherwell erholsam api

Dies ist relevant für Cherwell Service Management V8 + REST API.

Code, der Server Laufzeit Ausnahme auslöst:

string user = "myUser"; 
    string password = "myPassword"; 

    var client1 = new RestClient("http://13.88.176.216/cherwellapi/token?auth_mode=Internal"); 
client.Authenticator = new HttpBasicAuthenticator(user, password); 
    var request1 = new RestRequest(Method.POST); 
    request1.AddHeader("content-type", "application/x-www-form-urlencoded"); 

    request1.AddHeader("cache-control", "no-cache"); 
    request1.AddParameter("application/x-www-form-urlencoded", "grant_type=password&client_id=my_client_id&client_secret=my_client_secret", ParameterType.RequestBody); 
    IRestResponse response = client1.Execute(request1); 

Die Sache ist, wenn ich die gleiche Methode aus der Prahlerei ui (http://13.88.176.216/CherwellAPI/Swagger/ui/index#!/Service/Service_Token) ausführen ich das Token, ohne sich einen Fehler bekommen.

Einzelheiten des Antrags in Curl:

Locken

curl -X POST --header "Content-Type: application/x-www-form-urlencoded" --header „Accept: application/json“-d "grant_type = Passwort & client_id = my_client_id & client_secret = my_client_secret & username = my_user_name & password = my_password" "http://13.88.176.216/CherwellAPI/token?auth_mode=Internal"

Anforderungs-URL http://13.88.176.216/CherwellAPI/token?auth_mode=Internal

Dies ist die Antwort Körper aus dem Test Prahlerei ui, nicht mein Code:

{ 
    "access_token": "the_acces_token", 
    "token_type": "bearer", 
    "expires_in": 1199, 
    "refresh_token": "the_refresh_token", 
    "as:client_id": "client_key", 
    "username": "user", 
    ".issued": "date", 
    ".expires": "other_date" 
} 

Jede Hilfe geschätzt wird.

Antwort

0

Versuchen Sie, den Benutzernamen/das Passwort als Teil Ihrer formcodierten Daten einzugeben.

Lassen Sie den Authenticator-Abschnitt fallen, es sollte für diesen Teil nicht notwendig sein.

So

request1.AddParameter("application/x-www-form-urlencoded", "grant_type=password&client_id=my_client_id&client_secret=my_client_secret&username=(yourusernamehere)&password=(yourpasswordhere)", ParameterType.RequestBody); 

ich tatsächlich aufgezeichnet gerade ein Video zu diesem Thema nicht allzu langer Zeit (ein Browser-Rest-Client verwendet, nicht C#, aber Sie bekommen das Bild), das bald auf unserem YouTube-Kanal veröffentlichen sollte unter https://youtube.com/beyond20llc - Ich kann dieses Video an Sie senden, wenn Sie es sehen möchten, bevor es Youtube erreicht.

Die Daten, die ich gesendet, wenn ich für ein Token authentifiziert wurde sah im Wesentlichen wie folgt aus:

grant_type=password& 

client_id=1234567890& 

username=CSDAdmin& 

password=CSDAdmin 

(Natürlich CSDAdmin der Standard-Benutzername/Passwort auf einer neuen Installation von Cherwell zu sein - wenn Sie Das CSDAdmin-Konto verfügt weiterhin über diese Anmeldeinformationen und wird sofort geändert, da dies ein bekannter Standardpass ist.

0

Haben Sie versucht, das Swagger-Code-Generierungstool zu verwenden, wie in der Cherwell-Dokumentation dokumentiert?

Sobald Sie den Clientcode generiert haben, verfügen Sie über Wrapperdatenstrukturen für alle Cherwell REST API-Anforderungen und -Antworten.

Using Swagger Code Gen

Sie müssen Maven und das Java Development Kit installieren.