2016-08-02 5 views
0

Обычно я не задаю вопросов, потому что большую часть времени я могу найти ответы. Но в этот момент я не нашел его, и я действительно застрял. У меня есть проблема с попыткой получить токен доступа для Cherwell api: http://13.88.176.216/CherwellAPI/Swagger/ui/index#!/Service/Service_Token Я использовал почтальону для генерации этого кода:RestSharp Oauth2 authentication Cherwell restful api

Это относится к API-интерфейсу V8 + REST от Cherwell Service Management.

Код, который выбрасывает сервера во время выполнения исключение:

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); 

Дело в том, когда я исполняю тот же метод с чванством Ui (http://13.88.176.216/CherwellAPI/Swagger/ui/index#!/Service/Service_Token) я могу получить маркер без получения каких-либо ошибок.

Детали запроса в CURL:

Curl

локон -X POST --header "Content-Type: применение/х-WWW-форм-urlencoded" --header «Accept: применение/JSON»-d "grant_type = пароль & client_id = my_client_id & client_secret = my_client_secret & имя пользователя = my_user_name & пароль = my_password" "http://13.88.176.216/CherwellAPI/token?auth_mode=Internal"

URL запроса http://13.88.176.216/CherwellAPI/token?auth_mode=Internal

Это тело ответа от теста чванство Ui, не мой код:

{ 
    "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" 
} 

Любая помощь будет оценена.

ответ

0

Попробуйте включить имя пользователя/пароль как часть данных, закодированных в форме.

Откажитесь от раздела аутентификатора, это не обязательно для этой части.

Так,

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); 

Я на самом деле просто записал видео на этом не так давно (с помощью клиента браузера отдыха, а не C#, но вы получите картину), которые должны размещать на наш канал YouTube в ближайшее время на https://youtube.com/beyond20llc - Я могу отправить это видео вам, если вы хотите увидеть его до того, как он достигнет youtube.

Данные, которые я послал, когда я аутентичность знамения по существу выглядел следующим образом:

grant_type=password& 

client_id=1234567890& 

username=CSDAdmin& 

password=CSDAdmin 

(Конечно, CSDAdmin будет имя пользователя по умолчанию/пароль на новой установке Cherwell - если вы Учетная запись CSDAdmin все еще имеет эти учетные данные, сразу меняет ее, поскольку это общеизвестный пароль по умолчанию).

0

Вы пробовали использовать инструмент генерации кода чарга, как описано в документации Cherwell?

Как только вы создали код клиента, у вас будут структуры данных оболочки для всех запросов и ответов API Cherwell REST.

Using Swagger Code Gen

Вам нужно будет установить Maven и Java Development Kit.