Closed Shtirlits1972 closed 4 years ago
Добрый вечер! Судя по трассировке, URL неверный формируется.
Должен получиться http://api.sb.mdlp.crpt.ru/api/v1/auth
,
а в трассировке — http://api.sb.mdlp.crpt.ru/auth
.
Вы уверены, что baseUrl у вас именно такой, как показан?
В нем присутствует на конце этот кусок /api/v1
?
Добрый вечер! Спасибо за помощь, поменял код, получилось авторизоватся, но возникла другая проблема. Вот собственно код:
string client_id = ConfigurationManager.AppSettings["client_id"];
string client_secret = ConfigurationManager.AppSettings["client_secret"];
string user_id = ConfigurationManager.AppSettings["user_id"];
GostCryptoHelpers.DefaultStoreLocation = StoreLocation.CurrentUser;
MdlpClient client = new MdlpClient(credentials: new ResidentCredentials
{
ClientID = client_id,
ClientSecret = client_secret,
UserID = user_id,
}, baseUrl: "http://api.sb.mdlp.crpt.ru/api/v1/");
client.Tracer = Console.WriteLine;
try
{
var info = client.GetRegions(0, 10);
Console.WriteLine($"UserInfo: {info.ToJson()}");
}
а вот скриншот с ошибкой:
по трассировке видно, что токен получен успешно, но список регионов получить не удалось. Может это связано, с тем, что сертификат привязан к локальному юзеру, а не к компютеру? GostCryptoHelpers.DefaultStoreLocation = StoreLocation.CurrentUser; // без этого сертификат не находится.
В случае проблемы с сертификатом у вас бы и авторизоваться не получилось. Если авторизация прошла — значит, с сертификатом все в порядке.
От DefaultStoreLocation
зависит только то, под каким пользователем нужно будет запускать ваш процесс.
Если LocalMachine
— то под админом, если CurrentUser
— то будет работать и под обычным пользователем.
The underlying connection was closed — такое может быть, если у них сервер упал (что маловероятно). Если проблема постоянно повторяется, думаю, это что-то с сетевыми настройками. Может, с файрволлом, может, с антивирусом. Тут я вряд ли смогу подсказать, в чем дело.
Я попробовал только что этот метод на тестовом компе — он нормально вызывается на Песочнице:
Прошу прощения, ещё один вопрос - только что отработал метод получения регионов, но странное дело он отработал, только после того, как я запустил fiddler, что-бы посмотреть, почему же не проходят запросы.
Вот ошибка, кторую выдаёт fiddler:
Не могли бы вы подсказать, что нужно сделать, что-бы программа работала без фиддлера? Заранее спасибо.
Я подозреваю, что это может быть связано с выбором между http и https-адресами. В Честном знаке некоторые методы для резидентов вызываются только через https endpoint. Причем ошибки сервер выдает крайне невразумительные (типа, Internal server error: end of stream). Возможно, это ваш случай.
Помогло игнорирование ошибок сертификатов:
client.Client.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
тут client это:
MdlpClient client = new MdlpClient(credentials: new ResidentCredentials
{
ClientID = client_id,
ClientSecret = client_secret,
UserID = user_id
}, baseUrl: strBaseUrl);
Оставлю это здесь, может кому-нибудь поможет. Ещё раз спасибо за отличную библиотеку и за помощь в решении вопроса.
Ага, спасибо!
Я так понимаю, можно еще добавить сертификат тестового УЦ КриптоПро в доверенные. Судя по скриншоту, сертификат самой Песочницы подписан CRYPTO-PRO Test Center 2. Для работы с тестовыми УКЭП этот сертификат все равно придется добавить в доверенные.
Сертификат песочницы подписан другой организацией. Добавление её сертификата (сертификата издателя песочницы), а также добавление сертификата CryptoPro в доверенные положительных результатов не дали.
Доброго дня! Пробую использовать Вашу библиотеку.
при этом выскакивает ошибка:
хотя, с этими же параметрами в Posmen-е удаётся получить код авторизации, а затем и токен, правда отработать запрос с токеном не получается :-(
не подскажете, в чём может быть проблема?