Wialon — авторизация успешна, но токен не получен
Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.
Доступ к форуму партнерам «1C-Рарус» по дистрибуции предоставляется на сайте
rarus-soft.ru
Wialon — авторизация успешна, но токен не получен
Добрый день, Прикрепленные файлы |
|
Добрый день, Сергей! |
|
Пользуемся услугами мониторинга от Глобального позиционирования http://gp-track.ru/ Система Wialon, вход пытался делать Hosting и Local, как с указание сайта gp-track.ru так и с hst-api.wialon.com. прохожу авторизацию успешно , но токен не получаю. (ошибка как в первом сообщении) Прикрепленные файлы |
|
Сергей, рекомендую сделать настройку согласно картинке. Прикрепленные файлы |
|
Проблема немного другая. URLUnencoded — и вот тут нет данных, точнее нет такого свойства!! Но они есть в Элементы.HTML.Документ.URL, где их собственно можно легко получить. Пришлось расширением изменить данную процедуру и получить токен. Все заработало. (платформа 8.3.14.1630) Прикрепленные файлы |
|
Компания «Регион-Софт» Заглянувший Сообщений: 105 |
#6
10.03.2020 14:27:23 Проблема подтвердилась на релизе 2.2.4.1 Еще возникла проблема при получении «Имя ресурса», только по адресу ресурса из скриншота выше получилось получить список Имён ресурсов. |
После выполнения метода /V3/Authenticate?type=certificate получаю зашифрованный ответ и согласно API мне необходимо его расшифровать тем же сертификатом , затем преобразовать в Base64 и полученную строку использовать в качестве ddauth_token при авторизации для любых последующих действий.
Попытка
Соединение = Новый HTTPСоединение(«https://diadoc-api.kontur.ru»,,,,,,Новый ЗащищенноеСоединениеOpenSSL(),Ложь);
Исключение
Сообщить(«Не удалось установить соединение с сервером онлайн-проверки:»
+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
Возврат;
КонецПопытки;
//Тело POST-запроса
имяФайлаСертификата = "d:/xxxxxxxxxxxxxxxxxxxx/yyyyyyyyyy.cer";
ВремКаталог = "c:Users...AppDataLocalTemp66ac670b-f9b9-11ea-9441-00155d27324d";
ИмяФайлаВыходЗапросаВыгрузкиДок = ВремКаталог + "UploadDocResult83.txt";
ТекстЗапросаФайл = Новый ТекстовыйДокумент;
ТекстЗапросаФайл.Прочитать(имяФайлаСертификата, "windows-1251");
ТелоPOSTЗапроса = ТекстЗапросаФайл.ПолучитьТекст();
ФайлСертификата = Новый ДвоичныеДанные(имяФайлаСертификата);
СодержимоеФайла = XMLСтрока(ФайлСертификата);
Заголовки = Новый Соответствие();
Заголовки.Вставить("Authorization", "DiadocAuth ddauth_api_client_id=test-diadoc-api-ххххххххххххххххххххххххххх");
Заголовки.Вставить("Content-Type", "application/octet-stream"); //
Заголовки.Вставить("Content-Length", Формат(СтрДлина(СодержимоеФайла),"ЧЦ=; ЧГ=")); //
HTTPЗапрос = Новый HTTPЗапрос("/V3/Authenticate?type=certificate", Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(СодержимоеФайла, "windows-1251", ИспользованиеByteOrderMark.НеИспользовать);
Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос, ИмяФайлаВыходЗапросаВыгрузкиДок );
МенеджерКриптографии = НОвый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", "", 80);
МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = "1";
ФайлТокенаДляРасшифровки = Новый ДвоичныеДанные(ИмяФайлаВыходЗапросаВыгрузкиДок);
ТокенРасшифрован = МенеджерКриптографии.Расшифровать(ИмяФайлаВыходЗапросаВыгрузкиДок);
Сообщить("ТокенРасшифрован: " + ТокенРасшифрован);
Токен = УбратьСимволы1013(ПолучитьBase64СтрокуИзДвоичныхДанных(ТокенРасшифрован));
Сообщить("Токен: " + Токен);
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Authorization", "DiadocAuth ddauth_api_client_id=test-diadoc-api-xxxxxxxxxxxxxxxxxxxxxxxx, ddauth_token=" + Токен);
ИмяФайлВыходАутентификация = ВремКаталог + "" + "AuthResult83.txt";
HTTPЗапрос = Новый HTTPЗапрос("/GetMyOrganizations?autoRegister=false", ЗаголовокHTTP);
Результат = Соединение.Получить(HTTPЗапрос,ИмяФайлВыходАутентификация);
Сообщить("Код состояния " + Результат.КодСостояния + ".");
И ответы с промежуточными значениями после запроса /GetMyOrganizations?autoRegister=false:
ТокенРасшифрован: F2 A2 C1 A0 E4 9A 55 6C 3C 70 3F BD F0 E9 24 EA FE 96 5F 08 5B 33 BB C1 F6 06 5C 13 98 DA 99 68 4A AA 2A CE 6D C6 07 66 FC 40 31 BF F1 F8 C1 CC FC D7 FF 50 65 C6 B1 EC A0 C0 9A 96 1D 97 BF DE 9F A7 9D 63 84 C7 D4 09 66 97 F1 3A 3F BC 45 B8 28 A4 50 17 E2 AF 61 B5 F1 1A A9 9B C8 D4 58 49 F7 64 EF 50 9C FE 34 DB FD C3 F3 F2 35 FE 07 59 F7 E2 28 66 A8 95 6D 41 86 FC 8A E0 A4 62 89 70 3A 1E F6 94 D9 2F DF CE CB 6D 65 62 D9 C3 EC 34 6A 90 5E 25 ED BE 63 02 27 6E 2D D0 55 34 F0 19 04 5E 86 51 F1 4A 36 E7 DC 42 F2 C9 13 9B 3C 83 D5 7F 8F D3 57 A1 A5 4B C8 31 D6 D1 6B 7A A3 0B EB FE 06 E7 EC E6 D7 9D 59 1C BA 85 C9 FE BD 5B 6B C0 40 05 41 70 62 59 26 0A 0B F9 36 7D 37 5D 3E 96 80 0F F3 B6 CA ED 59 CA 1E 99 37 E0 68 93 BE EB 0D A6 FE F5 97 BB 77 58 CB 19 8D 28 80 73
Токен: 8qLBoOSaVWw8cD+98Okk6v6WXwhbM7vB9gZcE5jamWhKqirObcYHZvxAMb/x+MHM/Nf/UGXGseygwJqWHZe/3p+nnWOEx9QJZpfxOj+8RbgopFAX4q9htfEaqZvI1FhJ92TvUJz+NNv9w/PyNf4HWffiKGaolW1BhvyK4KRiiXA6HvaU2S/fzsttZWLZw+w0apBeJe2+YwInbi3QVTTwGQRehlHxSjbn3ELyyRObPIPVf4/TV6GlS8gx1tFreqML6/4G5+zm151ZHLqFyf69W2vAQAVBcGJZJgoL+TZ9N10+loAP87bK7VnKHpk34GiTvusNpv71l7t3WMsZjSiAcw==
Код состояния 401. Invalid auth token
Подскажите, в чем ошибка расшифровки/кодирования? Возможно я использую не те методы или где то не указываю нужные форматы…
Как посмотреть ошибки автосинхронизации
При настройке автосинхронизации для приложений на базе SAML могут возникать следующие ошибки:
-
Ошибки этапа настройки
-
Ошибки выполнения автосинхронизации
-
Ошибки на уровне ресурсов
Ниже описано, как их устранить.
Примечание. Если вам не удается устранить ошибку с помощью инструкций из этой статьи, обратитесь в службу поддержки.
Ошибки этапа настройки
Ошибка кода авторизации
Такая ошибка может появиться, если код авторизации не удалось заменить на токен обновления. Причиной может послужить неправильный код авторизации или длительный промежуток времени с момента авторизации до нажатия кнопки Сохранить изменения. Чтобы устранить эту ошибку, повторите авторизацию и сохраните изменения.
Сообщение об ошибке | Решение |
---|---|
Не удалось сгенерировать токен авторизации. | Повторите попытку и сохраните изменения. |
Ошибка устаревшей страницы
Эта ошибка возникает, если страница браузера не обновлялась, в то время как настройки были изменены в другом окне браузера или другим пользователем. При этом появляются следующие сообщения:
Сообщение об ошибке | Решение |
---|---|
Данные на странице устарели. Конфигурация синхронизации настроена. | Чтобы переопределить существующие настройки, обновите страницу. |
Данные на странице устарели. Конфигурация синхронизации отсутствует. | Чтобы переопределить существующие настройки, обновите страницу. |
Данные на странице устарели. Активировать ненастроенную конфигурацию синхронизации нельзя. | Чтобы переопределить существующие настройки, обновите страницу. |
Данные на странице устарели. Удалить ненастроенную конфигурацию синхронизации нельзя. | Чтобы переопределить существующие настройки, обновите страницу. |
Временная ошибка страницы
Временные ошибки обычно устраняются сами собой. Обновите страницу или повторите попытку немного позже.
Сообщение об ошибке | Решение |
---|---|
Не удалось загрузить настройки синхронизации. | Обновите страницу. |
Не удалось загрузить предварительные настройки синхронизации. | Обновите страницу. |
Не удалось загрузить статус синхронизации. | Обновите страницу. |
Не удалось активировать синхронизацию. | Повторите попытку. |
Не удалось удалить настройки синхронизации. | Повторите попытку. |
Не удалось создать настройку синхронизации. | Повторите попытку и сохраните изменения. |
Не удалось обновить настройку синхронизации. | Повторите попытку и сохраните изменения. |
Не удалось загрузить настраиваемые атрибуты. | Повторите попытку. |
Не удалось обновить сопоставление атрибутов. | Повторите попытку. |
Не удалось обновить настройки группы для автосинхронизации. | Повторите попытку. |
Не удалось обновить конфигурацию отключения. | Повторите попытку. |
Конфигурация удалена, но запретить доступ клиента API не удалось. |
При удалении конфигурации отменяются разрешения, которые позволяют приложению обращаться к вашим данным в сервисах Google. Эту ошибку можно устранить вручную: нажмите Управлять доступом клиента API в разделе Безопасность. Если вы планируете позже восстановить конфигурацию, ничего не делайте. |
Не удалось обновить настройки синхронизации. | Обновите страницу. |
Ошибка аутентификации. | Учетные данные для аутентификации (например, токен владельца) указаны неверно. Задайте правильные учетные данные. |
Введенный вами URL конечной точки системы кросс-доменного управления учетными данными (SCIM) недействителен. | URL конечной точки недействителен. Введите правильный URL. |
Не удалось включить синхронизацию. | Переведите ползунок Автосинхронизация в положение Активный. |
Не удалось удалить настройки синхронизации. |
|
Не удалось загрузить атрибуты целевого поставщика услуг. |
|
Не удалось загрузить набор атрибутов целевого ресурса. | Проверьте URL конечной точки, указанный при настройке автосинхронизации, и повторите сопоставление атрибутов облачного каталога с атрибутами целевого приложения. |
Ошибки выполнения автосинхронизации
Ошибки выполнения автосинхронизации возникают из-за проблем с доступом к API, авторизацией и конфигурацией.
Ошибки внутренних сервисов Google
Код ошибки | Описание и решение |
---|---|
17003 17006 17008 |
Описание Не удалось пройти аутентификацию во внутренних сервисах Google. Причина Аннулированы разрешения у следующего идентификатора клиента синхронизации пользователей: 910835873219-es01p47a1ks618hgp59q26cnc6sv33r3.apps.googleusercontent.com Решение Убедитесь, что у данного идентификатора есть разрешения на доступ к следующим областям: https://www.googleapis.com/auth/admin.directory.user.readonly, В разделе Безопасность консоли администратора нажмите Управлять доступом клиента API и перейдите в раздел Расширенные настройки. Проверьте доступ идентификатора к указанным областям и при необходимости добавьте их. |
17007 |
Описание Не удалось предоставить доступ приложениям, которые поддерживают автосинхронизацию с делегированием прав на уровне домена. Не удалось делегировать права на уровне домена сервису автосинхронизации. Без этих прав сервис автосинхронизации не сможет читать каталог Google. Причины Причина 1: аннулированы разрешения у идентификатора клиента синхронизации пользователей. Решения В разделе Безопасность консоли администратора нажмите Управлять доступом клиента API и перейдите в раздел Расширенные настройки. Добавьте идентификатор клиента и области действия: Идентификатор клиента: Области действия: https://www.googleapis.com/auth/admin.directory.user.readonly, Вы также можете удалить приложение, с которым возникла проблема, а затем добавить его снова. Причина 2: непредвиденные системные ошибки. Решение Как правило, эта проблема решается автоматически. Если она не решилась через несколько часов, добавьте идентификатор клиента и области действия или удалите и повторно добавьте приложение, как описано выше в инструкциях для причины 1. |
Ошибки токена авторизации
Код ошибки | Описание и причина | Решение |
---|---|---|
17010 |
Недостаточно учетных данных для вызова конечной точки SCIM. Причина: токен авторизации аннулирован. |
Повторите попытку авторизации. Для этого нажмите Автосинхронизация и в настройках выберите Авторизовать повторно. |
17013 |
Ошибка получения токена доступа у поставщика услуг. Причина: токен авторизации аннулирован. |
Если проблема не решится автоматически, повторите попытку авторизации. Для этого нажмите Автосинхронизация и в настройках выберите Авторизовать повторно. |
Ошибки доступа к токену
Код ошибки | Описание и причина | Решение |
---|---|---|
17002 17011 |
Не удалось создать токен доступа. Причина: сейчас некоторые внутренние сервисы Google недоступны. |
Проблема должна устраниться автоматически. |
17009 | Не удалось создать токен доступа из токена обновления. | Повторите попытку авторизации. Для этого нажмите Автосинхронизация и в настройках выберите Авторизовать повторно. |
Общие ошибки
Код ошибки | Описание и причина | Решение |
---|---|---|
1200x |
Внутренняя ошибка |
Проблема должна устраниться автоматически. |
25001 | Сервер или сервис Google временно недоступны. | Настройте автосинхронизацию ещё раз. |
25002 |
Сервер или сервис Google временно недоступны. Причина: у клиента не установлено приложение. |
Установите приложение и настройте автосинхронизацию ещё раз. |
25005 | Сервер или сервис Google временно недоступны. | Проблема должна устраниться автоматически. |
25016 | Сервер или сервис Google временно недоступны. | Настройте автосинхронизацию ещё раз. |
50001 | Внутренняя ошибка | Проблема должна устраниться автоматически. |
50003 | Внутренняя ошибка | Проблема должна устраниться автоматически. |
50005 | Удаленная группа присутствует в фильтрах групп. | Удалите данную группу из области синхронизации. |
50006 | Внутренняя ошибка | Проблема должна устраниться автоматически. |
Ошибки на уровне ресурсов
Если в разделе «Автосинхронизация» на странице настроек приложения SAML есть ошибки, нажмите Скачать список. В скачанном файле будут перечислены операции создания, удаления или изменения, которые завершились сбоем, а также приведены коды и описания всех ошибок.
Эти ошибки влияют только на конкретные ресурсы, указанные в файле.
Код ошибки | Описание ошибки | Решение |
---|---|---|
45003 |
Приложение на базе системы кросс-доменного управления учетными данными (SCIM) не принимает запрос на обновление, создание или удаление ресурса. Подробное описание ошибки содержится в файле, который можно скачать. Возможные причины:
|
После устранения ошибки сохраните изменения и повторите попытку. |
45004 |
Произошла ошибка при передаче данных между поставщиком услуг и Google в качестве поставщика идентификационной информации. Текст ошибки: «Внутренняя ошибка – превышена квота». Возможные причины:
|
Обратитесь к поставщику услуг. |
45005 | Конечная точка системы кросс-доменного управления учетными данными (SCIM) недоступна. Проверьте данные в консоли администратора. | После устранения ошибки сохраните изменения и повторите попытку. |
45006 |
Приложение на базе системы кросс-доменного управления учетными данными (SCIM) не принимает запрос на обновление, создание или удаление ресурса. Подробное описание ошибки содержится в файле, который можно скачать. Возможные причины:
|
После устранения ошибки сохраните изменения и повторите попытку. |
45016 |
Приложение на базе системы кросс-доменного управления учетными данными (SCIM) не принимает запрос на обновление, создание или удаление ресурса, поскольку обязательное поле не заполнено. Подробное описание ошибки содержится в файле, который можно скачать. |
После устранения ошибки сохраните изменения и повторите попытку. |
Эта информация оказалась полезной?
Как можно улучшить эту статью?
I am unable to get an access token from Thinktecture Authorization Server. After successfully getting grant code, I try make a POST request to the token endpoint, but always get a 400 Bad Request with this response:
message: «{ «error»: «invalid_client» }»
My request was:
POST to https://host/authz/users/oauth/token
request body:
{«code»:»grant_code_received_from_previous_request»,»client_id»:»myclient»,»grant_type»:»authorization_code»,»client_secret»:»mysecret»}
My client is setup properly in the Authorization Server. My client id and secret are correct; they are the same value I used to the grant code in the previous request (/users/oauth/authorize).
Any idea for this «invalid_client» issue? There is no other information in the response other than «invalid_client».
asked Mar 3, 2015 at 21:58
you need to send client credentials using http basic authentication instead of posting Id and secret in the body.
answered Mar 5, 2015 at 18:53
leastprivilegeleastprivilege
18k1 gold badge33 silver badges50 bronze badges
1
I followed @leastprivilege advice and did that:
// set up the base64-encoded credentials
let clientId = "myclientid"
let clientSecret = "myclientsecret"
let loginString = NSString(format: "%@:%@", clientId, clientSecret)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(0))
After that created the request instance like this:
var request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
// Only these four are required based on the documentation.
let postString = "grant_type=authorization_code&code=(code)&redirect_uri=app:/your.redirect.uri"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
request.setValue("Basic (base64LoginString)", forHTTPHeaderField: "Authorization")
Hope it helps!
answered Sep 25, 2016 at 8:43
user2128702user2128702
1,9792 gold badges28 silver badges65 bronze badges
You can get the more information on the logging file.
Take a look at it, you can check the logging options on the web.config of the Identity Server:
<system.diagnostics>
<!-- simple system.diagnostics logger -->
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Trace.log" />
<remove name="Default" />
</listeners>
</trace>
<!-- can be used with TraceSource logger -->
<!--<sources>
<source name="Thinktecture.IdentityServer"
switchValue="Information, ActivityTracing">
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "trace.svclog" />
</listeners>
</source>
</sources>-->
More information about logging at:
http://identityserver.github.io/Documentation/docs/configuration/logging.html
answered Mar 5, 2015 at 12:02
I am unable to get an access token from Thinktecture Authorization Server. After successfully getting grant code, I try make a POST request to the token endpoint, but always get a 400 Bad Request with this response:
message: «{ «error»: «invalid_client» }»
My request was:
POST to https://host/authz/users/oauth/token
request body:
{«code»:»grant_code_received_from_previous_request»,»client_id»:»myclient»,»grant_type»:»authorization_code»,»client_secret»:»mysecret»}
My client is setup properly in the Authorization Server. My client id and secret are correct; they are the same value I used to the grant code in the previous request (/users/oauth/authorize).
Any idea for this «invalid_client» issue? There is no other information in the response other than «invalid_client».
asked Mar 3, 2015 at 21:58
you need to send client credentials using http basic authentication instead of posting Id and secret in the body.
answered Mar 5, 2015 at 18:53
leastprivilegeleastprivilege
18k1 gold badge33 silver badges50 bronze badges
1
I followed @leastprivilege advice and did that:
// set up the base64-encoded credentials
let clientId = "myclientid"
let clientSecret = "myclientsecret"
let loginString = NSString(format: "%@:%@", clientId, clientSecret)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(0))
After that created the request instance like this:
var request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
// Only these four are required based on the documentation.
let postString = "grant_type=authorization_code&code=(code)&redirect_uri=app:/your.redirect.uri"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
request.setValue("Basic (base64LoginString)", forHTTPHeaderField: "Authorization")
Hope it helps!
answered Sep 25, 2016 at 8:43
user2128702user2128702
1,9792 gold badges28 silver badges65 bronze badges
You can get the more information on the logging file.
Take a look at it, you can check the logging options on the web.config of the Identity Server:
<system.diagnostics>
<!-- simple system.diagnostics logger -->
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Trace.log" />
<remove name="Default" />
</listeners>
</trace>
<!-- can be used with TraceSource logger -->
<!--<sources>
<source name="Thinktecture.IdentityServer"
switchValue="Information, ActivityTracing">
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "trace.svclog" />
</listeners>
</source>
</sources>-->
More information about logging at:
http://identityserver.github.io/Documentation/docs/configuration/logging.html
answered Mar 5, 2015 at 12:02