Что такое ошибка токена доступа

Can anyone help me with what is wrong with the below code in the link GitHub
oauth2-provider server with passport-oauth2 consumer

After I login with http://localhost:8082 and reach my callback URL:
http://localhost:8081/auth/provider/callback, it throws an error

var express = require('express')
  , passport = require('passport')
  , util = require('util')
  , TwitterStrategy = require('passport-twitter').Strategy;

var TWITTER_CONSUMER_KEY = "--insert-twitter-consumer-key-here--";
var TWITTER_CONSUMER_SECRET = "--insert-twitter-consumer-secret-here--";

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});

passport.use(new TwitterStrategy({
    consumerKey: TWITTER_CONSUMER_KEY,
    consumerSecret: TWITTER_CONSUMER_SECRET,
    callbackURL: "http://127.0.0.1:3000/auth/twitter/callback"
  },
  function(token, tokenSecret, profile, done) {
    // asynchronous verification, for effect...
    process.nextTick(function () {

      return done(null, profile);
    });
  }
));


var app = express.createServer();

// configure Express
app.configure(function() {
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(express.logger());
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.session({ secret: 'keyboard cat' }));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});


app.get('/', function(req, res){
  res.render('index', { user: req.user });
});

app.get('/account', ensureAuthenticated, function(req, res){
  res.render('account', { user: req.user });
});

app.get('/login', function(req, res){
  res.render('login', { user: req.user });
});

app.get('/auth/twitter',
  passport.authenticate('twitter'),
  function(req, res){
    // The request will be redirected to Twitter for authentication, so this
    // function will not be called.
  });

app.get('/auth/twitter/callback', 
  passport.authenticate('twitter', { failureRedirect: '/login' }),
  function(req, res) {
    res.redirect('/');
  });

app.get('/logout', function(req, res){
  req.logout();
  res.redirect('/');
});

app.listen(3000);

function ensureAuthenticated(req, res, next) {
  if (req.isAuthenticated()) { return next(); }
  res.redirect('/login')
} 

InternalOAuthError: Failed to obtain access token

How can I resolve this issue?

Can anyone help me with what is wrong with the below code in the link GitHub
oauth2-provider server with passport-oauth2 consumer

After I login with http://localhost:8082 and reach my callback URL:
http://localhost:8081/auth/provider/callback, it throws an error

var express = require('express')
  , passport = require('passport')
  , util = require('util')
  , TwitterStrategy = require('passport-twitter').Strategy;

var TWITTER_CONSUMER_KEY = "--insert-twitter-consumer-key-here--";
var TWITTER_CONSUMER_SECRET = "--insert-twitter-consumer-secret-here--";

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});

passport.use(new TwitterStrategy({
    consumerKey: TWITTER_CONSUMER_KEY,
    consumerSecret: TWITTER_CONSUMER_SECRET,
    callbackURL: "http://127.0.0.1:3000/auth/twitter/callback"
  },
  function(token, tokenSecret, profile, done) {
    // asynchronous verification, for effect...
    process.nextTick(function () {

      return done(null, profile);
    });
  }
));


var app = express.createServer();

// configure Express
app.configure(function() {
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(express.logger());
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.session({ secret: 'keyboard cat' }));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});


app.get('/', function(req, res){
  res.render('index', { user: req.user });
});

app.get('/account', ensureAuthenticated, function(req, res){
  res.render('account', { user: req.user });
});

app.get('/login', function(req, res){
  res.render('login', { user: req.user });
});

app.get('/auth/twitter',
  passport.authenticate('twitter'),
  function(req, res){
    // The request will be redirected to Twitter for authentication, so this
    // function will not be called.
  });

app.get('/auth/twitter/callback', 
  passport.authenticate('twitter', { failureRedirect: '/login' }),
  function(req, res) {
    res.redirect('/');
  });

app.get('/logout', function(req, res){
  req.logout();
  res.redirect('/');
});

app.listen(3000);

function ensureAuthenticated(req, res, next) {
  if (req.isAuthenticated()) { return next(); }
  res.redirect('/login')
} 

InternalOAuthError: Failed to obtain access token

How can I resolve this issue?

Содержание

  • 1 Что вызывает ошибку при проверке токена доступа на Facebook?
    • 1.1 Решение 1. Обновление локальных данных Messenger (из-за ошибки в Messenger)
    • 1.2 Решение 2. Проверка токена с истекшим сроком доступа (для разработчиков)

Сообщение «Ошибка проверки токена доступа»Происходит при использовании Facebook / Messenger в основном двумя группами пользователей; один из них — постоянный пользователь, обращающийся к мессенджеру, а другой — разработчик, который разрешает вход в Facebook через API

Ошибка проверки токена доступа в MessengerОшибка проверки токена доступа — Messenger

Сообщение об ошибке в основном относится к процессу безопасности, который Facebook реализует при доступе к его платформе. Если какой-либо из шагов не завершен, недействителен или истек срок действия, вы получите сообщение об ошибке. Поскольку в двух случаях пользователи могут столкнуться с этой ошибкой, мы перечислили два решения.

Что вызывает ошибку при проверке токена доступа на Facebook?

Как упоминалось ранее, сообщение об ошибке ‘ошибка при проверке токена доступа’Не похож на другие обычные сообщения об ошибках, с которыми сталкивается конечный пользователь. Причины этой ошибки:

  • Сессия в мессенджере против вашей учетной записи как-то недействительным или имеет истекший.
  • Маркер доступа Facebook, который вы используете с API, истекший. Это происходит во многих случаях в среде разработки приложения, потому что токен доступа действителен только в течение ограниченного времени, прежде чем его нужно будет снова получить (для разработчиков).
  • Пользователь имеет поменял пароль или вышел из всех подключенных устройств из-за проблем безопасности.
  • Facebook намеренно вышел из вас посыльный по соображениям безопасности.

Что касается решения, указанного ниже для разработчиков, мы предполагаем, что вы знаете основы вызова API, который вы делаете с использованием токенов доступа. Если вы новичок в среде разработки, мы рекомендуем прочитать некоторые подробные материалы по кодированию, чтобы получить представление о токенах доступа.

Решение 1. Обновление локальных данных Messenger (из-за ошибки в Messenger)

Обычные пользователи могут увидеть это сообщение об ошибке при попытке войти в мессенджер или при переключении между различными учетными записями. Это не более, чем просто ошибка в вашем устройстве Android. Ваш смартфон отслеживает все токены доступа, связанные с Messenger. Если какой-либо из них станет недействительным или не обновится автоматически, вы можете получить сообщение об ошибке.

Здесь мы обновим данные вашего приложения Messenger. Убедитесь, что у вас есть имя пользователя и пароль, потому что вас могут попросить ввести его.

  1. На вашем устройстве Android откройте настройки и перейдите к Диспетчер приложений.
  2. Поиск записи посыльный и открой его.

Messenger в диспетчере приложений AndroidMessenger — менеджер приложений для Android

  1. Однажды в настройках приложения выберите Очистить данные и очистите данные приложения и кеш.

Очистка данных в MessengerОчистка данных — Messenger

  1. Закройте приложение настроек и перезапустите мессенджер после первого закрытия приложения. Теперь попробуйте войти в систему и посмотреть, исправлено ли сообщение об ошибке.

Решение 2. Проверка токена с истекшим сроком доступа (для разработчиков)

Токены доступа — это элементы, используемые приложениями, которые выполняют запросы API от имени пользователя. В основном токен доступа представляет собой авторизацию определенного приложения, поэтому он может авторизовать логин или получить доступ к некоторой информации пользователя.

facebook's guide on Expired Tokens in Official Facebook websiteРуководство Facebook по просроченным токенам

Если вы используете API Facebook и получаете доступ к токенам по самой простой причине (например, используете Facebook для проверки процесса регистрации в вашем приложении), убедитесь, что он не истек. Обычно срок действия токенов Facebook истекает через 2 часа после их запроса с сервера Facebook. Вы можете проверить официальную документацию по How-To: Обрабатывать токены доступа с истекшим сроком действия самим Facebook.

Удалить разрешения автономного доступа в AndroidУдалить разрешения автономного доступа в разработке приложений

Замечания: В некоторых случаях в среде разработки пользователи имеют Удалить offline_accesРазрешение включено. В некоторых случаях срок действия токена истекает, даже если срок его действия не истек. Убедитесь, что вы отключили эти параметры.

Вы также можете попробовать получить разрешение на offline_access Таким образом, вы можете получить токен, который не истекает и вызывает проблемы.

Если вы столкнулись с ошибкой «истек CSRF-токен» — читайте нашу статью. Из неё вы узнаете, как работает CSRF-token защита, и что делать, если CSRF токен истек.


Ошибка токен истек 1

Что такое CSRF

CSRF (англ. cross-site request forgery) — это межсайтовая подделка запроса. Это атака, которой может подвергаться любой веб-ресурс или веб-приложение. В первую очередь это касается сайтов, которые используют cookies, сертификаты авторизации и браузерную аутентификацию. В результате атаки страдают клиенты и репутация ресурса.

Вредоносный скрипт прячется в коде сайта или обычной ссылке. С помощью него мошенник получает доступ к конфиденциальной информации: платежным реквизитам, логину и паролю, личной переписке. После того как данные “в кармане”, хакер может изменить пароль, указать свой номер телефона или email, перевести деньги на свой счёт и многое другое.

Как работает CSRF-атака

Злоумышленник может использовать фишинговую ссылку — это наиболее распространенный способ обмана. В этом случае атака работает по следующей схеме:

  1. Злоумышленник создаёт поддельную страницу, очень похожую на оригинальную, и встраивает её в сайт. В коде ссылка может выглядеть так: <a href=“вредоносная ссылка”>Unsubscribe here</a>.
  2. Пользователь переходит с одной страницы сайта на другую (например, на страницу оплаты) и вместо реальной страницы попадает на поддельную.
  3. Пользователь совершает действие на странице, например, оплачивает товар или вводит данные авторизации.
  4. Информация или денежные средства вместо оригинального сервера уходят на сервер мошенника.

CSRF-атаки случаются из-за того, что без специальных настроек сервер не может с точностью в 100% определить, кто именно выполняет действия со стороны пользователя. Он не может проверить, действительно ли на кнопку “оплатить” нажал тот пользователь, который изначально открыл страницу с оплатой. Хакеры активно используют этот люфт в безопасности HTTP-запросов и применяют вредоносные скрипты. Однако от атаки можно защититься с помощью CSRF-токенов. 

Что такое CSRF-token и как он работает

В общем понимании токен — это механизм, который позволяет идентифицировать пользователя или конкретную сессию для безопасного обмена информацией и доступа к информационным ресурсам. Токены помогают проверить личность пользователя (например, клиента, который онлайн получает доступ к банковскому счёту). Их используют как вместо пароля, так и вместе с ним. Токен — это в каком-то смысле электронный ключ.

CSRF-token — это максимально простой и результативный способ защиты сайта от CSRF-мошенников. Он работает так: сервер создаёт случайный ключ (он же токен) и отправляет его браузеру клиента. Когда браузер запрашивает у сервера информацию, сервер, прежде чем дать ответ, требует показать ключ и проверяет его достоверность. Если токен совпадает, сессия продолжается, а если нет — прерывается. Токен действителен только одну сессию — с новой сессией он обновляется.

Чтобы получить ответ от сервера, используются разные методы запроса. Условно они делятся на две категории: те, которые не изменяют состояние сервера (GET, TRACE, HEAD), и те, которые изменяют (PUT, PATCH, POST и DELETE). Последние имеют большую CSRF-уязвимость и поэтому должны быть защищены в первую очередь.

При создании и использовании токена должны соблюдаться следующие условия:

  • нахождение в скрытом параметре;

  • генерация с помощью генератора псевдослучайных чисел;

  • ограниченное время жизни (одна сессия);

  • уникальность для каждой транзакции;

  • устойчивый к подбору размер (в битах);

  • невозможно переиспользовать.

Типы токенов

Существует три основных типа токенов по способу генерации:

  1. Synchronizer Tokens или Anti-CSRF (токены синхронизации). В этом случае инициатором ключа выступает сервер — на нём хранится исходная шифровка. Когда браузер обращается к серверу и предъявляет ему ключ, сервер сравнивает его с исходником и в зависимости от результата продолжает или прерывает сессию.
  2. Double Submit Cookie (двойная отправка куки). При этом способе токен нигде не хранится. Когда браузер обращается к серверу впервые за сессию, сервер генерирует и передаёт ему ключ в двух формах: через куки и в одном из параметров ответа. При следующих обращениях браузера сервер дважды проверяет правильность ключа — в параметрах и в куках.
  3. Encrypted Token (зашифрованный токен). Этот способ предполагает, что ключом шифруется какая-то часть информации о клиенте, которая содержится в браузере. При первом запросе браузера сервер получает информацию о пользователе, зашифровывает её и передаёт браузеру токен. При следующем взаимодействии сервер расшифровывает токен и сверяет информацию.

Помимо токенов, для защиты используется флаг Same-Site (большинство браузеров его поддерживает). Он работает напрямую для cookies и позволяет помечать куки конкретного домена. Сервер проверяет, содержатся ли нужные пометки в куках страницы, с которых происходит оплата или вносятся изменения. Если пометок нет — сессия прекращается.

Также в качестве меры защиты на страницах сайта настраивают форму с капчей. Это особенно актуально для страниц смены пароля или совершения денежных транзакций.

«Истек срок действия токена» или «CSRF-значение недопустимо»: что это значит и что делать

Даже при авторизации на сайтах, для которых настроена защита от атак, можно встретить следующие варианты сообщения об ошибке: «Недопустимое CSRF-значение»/«CSRF-токены не совпадают» или «Token expired» (в переводе — срок действия токена истек). Сообщение может отображаться как на английском, так и на русском. Пример ошибки при авторизации на сайте REG.RU:



Ошибка токен истек 2

Обычно ошибка возникает по двум основным причинам:

  • сервер некорректно сгенерировал токен;

  • срок токена истек — пользователь долго не совершал никаких действий на странице.

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


Ошибка токен истек 3

Иногда ошибка возникает из-за расширений защиты конфиденциальности или плагинов блокировки рекламы (например, Ghostery, UBlock Origin, Blur), которые настроены у пользователя. В этом случае можно отключить расширение. Также можно добавить сайт, на котором появилось сообщение, в список доверенных сайтов.

На примере сайта reg.ru покажем, что для этого нужно:

в Google Chrome

  1. Откройте настройки Chrome:

    Ошибка токен истек 4

  2. В списке слева выберите Конфиденциальность и безопасность, а затем Файлы cookie и другие данные сайтов.
  3. Внизу страницы откройте Сайты, которые всегда могут использовать файлы cookie и кликните Добавить.
  4. Введите «[*.]www.reg.ru» и нажмите Добавить.
  5. Нажмите Все файлы cookie и данные сайта и удалите все записи, которые связаны с сайтом reg.ru.
  6. Перезагрузите браузер и выполните операцию повторно.

в Яндекс.Браузер

  1. Откройте настройки браузера Яндекс:

    20220125_chto_oznachayet_oshibka_csrf_token_istek_5.png

  2. Перейдите на Сайты Расширенные.
  3. Кликните Настройки… для первого параметра в списке. Затем на вкладке «Разрешена» введите www.reg.ru и кликните Добавить.
  4. Добавьте адрес сайта для всех параметров списка по аналогии.

в Safari

  1. Откройте настройки Safari комбинацией Cmd + , (⌘,).
  2. Перейдите на вкладку Конфиденциальность и проверьте, что в пункте «Файлы cookie и данные веб-сайтов» не выбрано «Блокировать все файлы cookie». Если это так, снимите настройки.
  3. Кликните Управление данными веб-сайтов и удалите все записи, которые относятся к www.reg.ru.
  4. Перезагрузите браузер и выполните операцию повторно.

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

Заключение

Успешная атака CSRF позволяет хакеру действовать на сайте от имени другого зарегистрированного посетителя. Чтобы мошенник не добрался до конфиденциальных данных, для сайта нужно настроить один из типов CSRF-токенов. Токены позволяют серверу и браузеру безопасно обмениваться информацией в течение сессии. Однако даже на безопасных сайтах можно столкнуться с ошибкой «токен CSRF истек». В этом нет ничего страшного. Чтобы возобновить подключение, достаточно обновить страницу браузера.

Прежде, чем ответить на вопрос: «Что такое «ошибка токена»?», нужно понять, что такое токен. Так вот, токен (также может быть в виде аппаратного токена, USB-ключа, криптографического токена) в виде компактного устройства предназначен для того, чтобы обеспечить информационную безопасность пользователя, также чтобы можно было идентифицировать его владельца. Как правило, токен является физическим устройством, которое используется для того, чтобы упростить аутентификацию. Поэтому, если произошла ошибка токена, то это вопрос серьёзный и требует непростого подхода. Чтобы исправить такую ошибку, нужно обратиться к специалистам.

Как посмотреть ошибки автосинхронизации

При настройке автосинхронизации для приложений на базе SAML могут возникать следующие ошибки:

  • Ошибки этапа настройки

  • Ошибки выполнения автосинхронизации

  • Ошибки на уровне ресурсов

Ниже описано, как их устранить.

Примечание. Если вам не удается устранить ошибку с помощью инструкций из этой статьи, обратитесь в службу поддержки.

Ошибки этапа настройки

Ошибка кода авторизации

Такая ошибка может появиться, если код авторизации не удалось заменить на токен обновления. Причиной может послужить неправильный код авторизации или длительный промежуток времени с момента авторизации до нажатия кнопки Сохранить изменения. Чтобы устранить эту ошибку, повторите авторизацию и сохраните изменения.

Сообщение об ошибке Решение
Не удалось сгенерировать токен авторизации. Повторите попытку и сохраните изменения.

Ошибка устаревшей страницы

Эта ошибка возникает, если страница браузера не обновлялась, в то время как настройки были изменены в другом окне браузера или другим пользователем. При этом появляются следующие сообщения:

Сообщение об ошибке Решение
Данные на странице устарели. Конфигурация синхронизации настроена. Чтобы переопределить существующие настройки, обновите страницу.
Данные на странице устарели. Конфигурация синхронизации отсутствует. Чтобы переопределить существующие настройки, обновите страницу.
Данные на странице устарели. Активировать ненастроенную конфигурацию синхронизации нельзя. Чтобы переопределить существующие настройки, обновите страницу.
Данные на странице устарели. Удалить ненастроенную конфигурацию синхронизации нельзя. Чтобы переопределить существующие настройки, обновите страницу.

Временная ошибка страницы

Временные ошибки обычно устраняются сами собой. Обновите страницу или повторите попытку немного позже. 

Сообщение об ошибке Решение
Не удалось загрузить настройки синхронизации.  Обновите страницу. 
Не удалось загрузить предварительные настройки синхронизации. Обновите страницу. 
Не удалось загрузить статус синхронизации. Обновите страницу.
Не удалось активировать синхронизацию. Повторите попытку.
Не удалось удалить настройки синхронизации. Повторите попытку.
Не удалось создать настройку синхронизации. Повторите попытку и сохраните изменения.
Не удалось обновить настройку синхронизации. Повторите попытку и сохраните изменения.
Не удалось загрузить настраиваемые атрибуты. Повторите попытку.
Не удалось обновить сопоставление атрибутов. Повторите попытку.
Не удалось обновить настройки группы для автосинхронизации. Повторите попытку.
Не удалось обновить конфигурацию отключения. Повторите попытку.
Конфигурация удалена, но запретить доступ клиента API не удалось.

При удалении конфигурации отменяются разрешения, которые позволяют приложению обращаться к вашим данным в сервисах Google.

Эту ошибку можно устранить вручную: нажмите Управлять доступом клиента API в разделе Безопасность.

Если вы планируете позже восстановить конфигурацию, ничего не делайте. 

Не удалось обновить настройки синхронизации. Обновите страницу. 
Ошибка аутентификации. Учетные данные для аутентификации (например, токен владельца) указаны неверно. Задайте правильные учетные данные.
Введенный вами URL конечной точки системы кросс-доменного управления учетными данными (SCIM) недействителен. URL конечной точки недействителен. Введите правильный URL.
Не удалось включить синхронизацию. Переведите ползунок Автосинхронизация в положение Активный
Не удалось удалить настройки синхронизации.
  1. Нажмите Автосинхронизация, чтобы открыть настройки.
  2. В разделе Удаление конфигурации нажмите Удалить
Не удалось загрузить атрибуты целевого поставщика услуг.
  1. Нажмите Автосинхронизация, чтобы открыть настройки.
  2. В разделе Сопоставление атрибутов нажмите Изменить.
  3. Внесите нужные изменения.
Не удалось загрузить набор атрибутов целевого ресурса. Проверьте URL конечной точки, указанный при настройке автосинхронизации, и повторите сопоставление атрибутов облачного каталога с атрибутами целевого приложения.

Ошибки выполнения автосинхронизации

Ошибки выполнения автосинхронизации возникают из-за проблем с доступом к API, авторизацией и конфигурацией.

Ошибки внутренних сервисов Google

Код ошибки Описание и решение
17003
17006
17008

Описание 

Не удалось пройти аутентификацию во внутренних сервисах Google.

Причина

Аннулированы разрешения у следующего идентификатора клиента синхронизации пользователей:

910835873219-es01p47a1ks618hgp59q26cnc6sv33r3.apps.googleusercontent.com

Решение 

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

https://www.googleapis.com/auth/admin.directory.user.readonly,
https://www.googleapis.com/auth/admin.directory.userschema.readonly,
https://www.googleapis.com/auth/admin.directory.group.member.readonly

В разделе Безопасность консоли администратора нажмите Управлять доступом клиента API и перейдите в раздел Расширенные настройки. Проверьте доступ идентификатора к указанным областям и при необходимости добавьте их.

17007

Описание

Не удалось предоставить доступ приложениям, которые поддерживают автосинхронизацию с делегированием прав на уровне домена.

Не удалось делегировать права на уровне домена сервису автосинхронизации. Без этих прав сервис автосинхронизации не сможет читать каталог Google.

Причины

Причина 1: аннулированы разрешения у идентификатора клиента синхронизации пользователей.

Решения

В разделе Безопасность консоли администратора нажмите Управлять доступом клиента API и перейдите в раздел Расширенные настройки. Добавьте идентификатор клиента и области действия:

Идентификатор клиента:
910835873219-es01p47a1ks618hgp59q26cnc6sv33r3.apps.googleusercontent.com

Области действия:

https://www.googleapis.com/auth/admin.directory.user.readonly,
https://www.googleapis.com/auth/admin.directory.userschema.readonly,
https://www.googleapis.com/auth/admin.directory.group.member.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) не принимает запрос на обновление, создание или удаление ресурса. Подробное описание ошибки содержится в файле, который можно скачать.

Возможные причины:

  1. Превышено максимальное количество лицензий. В приложении на базе SCIM можно создать 5 пользователей, а вы включили автосинхронизацию для 6 пользователей.
  2. Слишком длинное значение. Например, идентификатор сообщения содержит слишком много символов, поэтому приложение его не принимает.
  3. Необходимо иметь хотя бы одно право доступа, одним из которых должно быть право на использование идентификатора профиля.
  4. Имя пользователя уже существует. Оно должно быть уникальным в масштабах организации.
  5. Ресурс (пользователь) не найден на стороне поставщика.
  6. Недопустимое значение идентификатора пользователя SCIM.
После устранения ошибки сохраните изменения и повторите попытку.
45004

Произошла ошибка при передаче данных между поставщиком услуг и Google в качестве поставщика идентификационной информации. Текст ошибки: «Внутренняя ошибка – превышена квота».

Возможные причины:

  • Сбой, повлиявший на работу поставщика услуг.
  • Сервер поставщика услуг не работает.
Обратитесь к поставщику услуг.
45005 Конечная точка системы кросс-доменного управления учетными данными (SCIM) недоступна. Проверьте данные в консоли администратора. После устранения ошибки сохраните изменения и повторите попытку.
45006

Приложение на базе системы кросс-доменного управления учетными данными (SCIM) не принимает запрос на обновление, создание или удаление ресурса. Подробное описание ошибки содержится в файле, который можно скачать.

Возможные причины:

  1. слишком длинное значение;
  2. недостаточно лицензий;
  3. недействительная лицензия;
  4. значение для данного разрешения не существует.
После устранения ошибки сохраните изменения и повторите попытку.
45016

Приложение на базе системы кросс-доменного управления учетными данными (SCIM) не принимает запрос на обновление, создание или удаление ресурса, поскольку обязательное поле не заполнено. Подробное описание ошибки содержится в файле, который можно скачать.

После устранения ошибки сохраните изменения и повторите попытку.

Эта информация оказалась полезной?

Как можно улучшить эту статью?

После выполнения метода /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.
Не удалось включить синхронизацию. Переведите ползунок Автосинхронизация в положение Активный
Не удалось удалить настройки синхронизации.
  1. Нажмите Автосинхронизация, чтобы открыть настройки.
  2. В разделе Удаление конфигурации нажмите Удалить
Не удалось загрузить атрибуты целевого поставщика услуг.
  1. Нажмите Автосинхронизация, чтобы открыть настройки.
  2. В разделе Сопоставление атрибутов нажмите Изменить.
  3. Внесите нужные изменения.
Не удалось загрузить набор атрибутов целевого ресурса. Проверьте URL конечной точки, указанный при настройке автосинхронизации, и повторите сопоставление атрибутов облачного каталога с атрибутами целевого приложения.

Ошибки выполнения автосинхронизации

Ошибки выполнения автосинхронизации возникают из-за проблем с доступом к API, авторизацией и конфигурацией.

Ошибки внутренних сервисов Google

Код ошибки Описание и решение
17003
17006
17008

Описание 

Не удалось пройти аутентификацию во внутренних сервисах Google.

Причина

Аннулированы разрешения у следующего идентификатора клиента синхронизации пользователей:

910835873219-es01p47a1ks618hgp59q26cnc6sv33r3.apps.googleusercontent.com

Решение 

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

https://www.googleapis.com/auth/admin.directory.user.readonly,
https://www.googleapis.com/auth/admin.directory.userschema.readonly,
https://www.googleapis.com/auth/admin.directory.group.member.readonly

В разделе Безопасность консоли администратора нажмите Управлять доступом клиента API и перейдите в раздел Расширенные настройки. Проверьте доступ идентификатора к указанным областям и при необходимости добавьте их.

17007

Описание

Не удалось предоставить доступ приложениям, которые поддерживают автосинхронизацию с делегированием прав на уровне домена.

Не удалось делегировать права на уровне домена сервису автосинхронизации. Без этих прав сервис автосинхронизации не сможет читать каталог Google.

Причины

Причина 1: аннулированы разрешения у идентификатора клиента синхронизации пользователей.

Решения

В разделе Безопасность консоли администратора нажмите Управлять доступом клиента API и перейдите в раздел Расширенные настройки. Добавьте идентификатор клиента и области действия:

Идентификатор клиента:
910835873219-es01p47a1ks618hgp59q26cnc6sv33r3.apps.googleusercontent.com

Области действия:

https://www.googleapis.com/auth/admin.directory.user.readonly,
https://www.googleapis.com/auth/admin.directory.userschema.readonly,
https://www.googleapis.com/auth/admin.directory.group.member.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) не принимает запрос на обновление, создание или удаление ресурса. Подробное описание ошибки содержится в файле, который можно скачать.

Возможные причины:

  1. Превышено максимальное количество лицензий. В приложении на базе SCIM можно создать 5 пользователей, а вы включили автосинхронизацию для 6 пользователей.
  2. Слишком длинное значение. Например, идентификатор сообщения содержит слишком много символов, поэтому приложение его не принимает.
  3. Необходимо иметь хотя бы одно право доступа, одним из которых должно быть право на использование идентификатора профиля.
  4. Имя пользователя уже существует. Оно должно быть уникальным в масштабах организации.
  5. Ресурс (пользователь) не найден на стороне поставщика.
  6. Недопустимое значение идентификатора пользователя SCIM.
После устранения ошибки сохраните изменения и повторите попытку.
45004

Произошла ошибка при передаче данных между поставщиком услуг и Google в качестве поставщика идентификационной информации. Текст ошибки: «Внутренняя ошибка – превышена квота».

Возможные причины:

  • Сбой, повлиявший на работу поставщика услуг.
  • Сервер поставщика услуг не работает.
Обратитесь к поставщику услуг.
45005 Конечная точка системы кросс-доменного управления учетными данными (SCIM) недоступна. Проверьте данные в консоли администратора. После устранения ошибки сохраните изменения и повторите попытку.
45006

Приложение на базе системы кросс-доменного управления учетными данными (SCIM) не принимает запрос на обновление, создание или удаление ресурса. Подробное описание ошибки содержится в файле, который можно скачать.

Возможные причины:

  1. слишком длинное значение;
  2. недостаточно лицензий;
  3. недействительная лицензия;
  4. значение для данного разрешения не существует.
После устранения ошибки сохраните изменения и повторите попытку.
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

Michael's user avatar

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

leastprivilege's user avatar

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

user2128702's user avatar

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

Sergio Olivereira's user avatar

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

Michael's user avatar

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

leastprivilege's user avatar

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

user2128702's user avatar

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

Sergio Olivereira's user avatar

Как получить токены доступа разбирали в этой иструкции.

В большинстве случаев при полном доступе к аккаунту проблем быть не должно. Однако изредка случаются ситуации, когда даже создатель аккаунта Метрики/Директа не может сформировать токен с полными правами доступа. Для таких случаев инструкция ниже:

Ошибка в токене Яндекс-Метрики
У Яндекса иногда бывает ошибка, связанная с тем, что у создателя счетчика метрики нет явных прав на редактирование, их нужно прописать через другой аккаунт с выданными правами.
Необходимо выдать права на редактирование другому аккаунту (Метрика/Настройки/Доступ), зайти под этим аккаунтом в наш личный кабинет и сформировать токен. Проблема с токеном Метрики должна решиться. Если нет, обратитесь в чат поддержки на нашем сайте, пожалуйста.

Ошибка в токене Яндекс-Директа

Ошибки бывают двух видов:

  • Если Вы являетесь агентством и Вы даете доступ к представительскому аккаунту в Яндекс.Директе, необходимо указать логин клиента, для аккаунта которого необходима защита.
  • Если же зашли под аккаунтом, на котором размещены рекламные кампании, то проблема можно решить так образом — в директе в левом меню перейти в раздел «Информация» — «Ваши представители». Затем добавить представителя с полными правами, зайти под ним в наш личный кабинет и добавить токен Директа.

Понравилась статья? Поделить с друзьями:
  • Что такое ошибка сервера 503 на ютубе
  • Что такое ошибка тестирование
  • Что такое ошибка сервера 400 на ютубе
  • Что такое ошибка сегментирования
  • Что такое ошибка сегментации