REST API

Добрый день!
Через swagger запускаю процедуру логина “/api/v1/Login”, которая успешно возвращает токен авторизации. Затем в этом же окне браузера через процедуру “/api/v1/Login/{login}” пытаюсь проверить токен залогинившегося пользователя, которая почему-то возвращает “401 Error: Unauthorized”. В качестве параметра, согласно описанию, подставляю логин пользователя. Почему процедура проверки “/api/v1/Login/{login}” не возвращает токен авторизации?

На сколько я понимаю, вы выполняете данные запросы из swagger вашего сервера. После того, как вы получили токен по “/api/v1/Login” вам необходимо авторизоваться из swagger на вашем Сервере с помощью данного токена. Для этого в верхней части страницы swagger нажмите на “Authorize”, в всплывающем внутреннем окне в поле “Value” введите “Bearer {token}”, где вместо “{token}” подставьте полученный вами ранее токен. После этого выполните интересующий ваш запрос “/api/v1/Login/{login}”.
Если же вы выполняете ваш запрос не через swagger, то в заголовке вашего запроса должно присутствовать “Authorization: Bearer {token}”, где вместо “{token}” опять же должен быть полученный вами ранее токен. Пример выполнения запроса через curl:

curl -X POST "> http://localhost:10000/api/v1/Login/test?application=test> " -H “accept: text/plain” -H “Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYWRtaW4iLCJBY2NvdW50SWQiOiIxIiwiVG9rZW5WZXJzaW9uIjoiMTUiLCJBcHBsaWNhdGlvbiI6InRlc3QiLCJUb2ulbklkIjoiOTQ5NjkiLCJuYmYiOjE2MAYwMzE1NzEsImV4cCI6MjE0NTc5NDQwMCwiaXNzIjoiTEVSUyBBTVIgU2VydmVyIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDoxMDAwMCJ9.r8WYhAOLs4EnvexJDAxH7X508Hcyt4l7xX5GaK8C3a4” -d “”

Обращаю ваше внимание, что запрос “/api/v1/Login/{login}” позволяет получить токен по любой учетной записи, не являющейся системной и администраторской. Для ее выполнения необходимо авторизоваться под учетной записью администратора.

Авторизовался. Отправляю запрос (скопировал из swagger):
curl -X POST “http://192.168.127.1:10000/api/v1/Login/admin2” -H “accept: text/plain” -H “Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYWRtaW4yIiwiQWNjb3VudElkIjoiMTA0IiwiVG9rZW5WZXJzaW9uIjoiMSIsIkFwcGxpY2F0aW9uIjoic3RyaW5nIiwiVG9rZW5JZCI6IjUyIiwibmJmIjoxNjE2MDM1Mzg2LCJleHAiOjE2NDgxNzYxODYsImlzcyI6IkxFUlMgQU1SIFNlcnZlciIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6MTAwMDAifQ.3jITbR3aDa_UCb71I-EseT-sFoNXWLBtW4HFjapoVvw” -d “”
В ответ всё равно “401 Error: Unauthorized”. Заметил, что в строке запроса, в заголовке Authorization нет слова “Bearer”. Может это привести к ошибочной авторизации?

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

Спасибо за консультация, я понял. Буду переписывать взаимодействие с ЛЭРС из SOAP в REST.
p.s.: слово Bearer не ставит сам swagger.

Действительно, Bearer не подставляется в swagger. В одной из следующих версий мы внесем изменения, при которых данное слово будет подставляться при авторизации в swagger, благодаря чему в поле value необходимо будет указывать только токен.

Спасибо.

Так как вопрос решен, данная тема будет закрыта.