Что означает термин «запрос обратного канала» и как делать запросы обратного канала

Чтобы быть более конкретным:

На самом деле я пытаюсь интегрироваться в Baseacamp, используя их новый API Basecamp, который поддерживает OAuth 2.0. и спасибо за их плохие ресурсы и документацию, я застрял на # 4 этого документация, в которой говорится, что я должен сделать запрос по обратному каналу, чтобы получить токен доступа (я успешно выполнил 1-3 шага, что означает, что у меня есть код подтверждения и состояние).

Так что, если у кого-то есть какие-либо идеи об этом звере, пожалуйста, помогите мне бороться с этим;)

Я использовал библиотеку jso OAuth 2.0, которая помогла мне выполнить 1-3 шага, но эта библиотека использует неявное предоставление аутентификации, а basecamp использует предоставление кода авторизации. Итак, я думаю, мне нужно немного потанцевать клиент-сервер вручную, поэтому мне нужно знать, что означает этот запрос обратного канала и как его сделать?


person Mohit    schedule 06.08.2014    source источник
comment
спасибо, но если бы я нашел правильное значение, я бы не спрашивал об этом здесь.   -  person Mohit    schedule 06.08.2014
comment
en.wikipedia.org/wiki/Security_Assertion_Markup_Language   -  person jbutler483    schedule 06.08.2014


Ответы (3)


Если вы разрабатываете клиентское приложение javascript, значит, вы используете неправильный сценарий OAuth 2. Сценарий, используемый в связанной документации, называется «предоставление кода авторизации» и предназначен для веб-приложения, развернутого на удаленном сервере. Обратный канал используется для получения токена в фоновом режиме между приложением и сервером аутентификации без участия пользователя, поэтому токен не виден даже пользователю. Поскольку встроенные клиенты (javascript, мобильные приложения и т. д.) не имеют четко разделенной удаленной среды, поэтому они в любом случае уязвимы, существует упрощенный сценарий «неявного предоставления», который не включает этот запрос обратного канала. Вы должны использовать неявный поток предоставления.

Основываясь на документации, которую вы связали, Basecamp использует очень устаревший черновик OAuth2, а именно версию 5, спецификации были выпущены после версии 31. В этой старой версии первый сценарий идентифицируется как «type=web_server» (изменен на «response_type= code" в спецификациях), в то время как вам нужно "type=user_agent" (в настоящее время "response_type=token" в спецификациях) для использования сценария неявного предоставления. Я не знаю, есть ли у Basecamp надлежащая документация для этого, связанная документация говорит, что она поддерживается, но больше ничего.

person Zólyomi István    schedule 08.08.2014
comment
этот ответ устарел. Вместо этого следует использовать поток кода авторизации. - person Yannic Hamann; 01.05.2019
comment
@YannicHamann Если быть точным: поток кода авторизации с PKCE :) - person mirind4; 07.11.2019

Что такое обратный канал?

Проще говоря, обратный канал — это исходящее соединение с сервером в Интернете, автоматически устанавливаемое клиентским программным обеспечением, работающим на ПК за вашим брандмауэром. Это также может быть столь же безобидно, как небольшой фрагмент информации («куки»), оставленный на рабочем столе клиента в легкодоступном месте. Цели соединений обратного канала и файлов cookie для сбора информации многочисленны и могут быть классифицированы как полезные, сомнительные и вредоносные. Давайте рассмотрим примеры из каждой категории.

person jbutler483    schedule 06.08.2014
comment
хорошо :) но если вы правильно понимаете мой вопрос, я задаю эту концепцию в контексте Basecamp, где я застрял. - person Mohit; 06.08.2014

Игнорировать «обратный канал». Это просто POST-запрос.

На третьем шаге вы получите временный проверочный код. На шаге 4 отправьте запрос POST с временным проверочным кодом, который будет заменен полупостоянным токеном аутентификации.

Это библиотека OAuth2, которую я использую для работы с basecamp. Соответствующий шаг 4, «запрос обратного канала», выполняется в функции getOAuthAccessToken: https://github.com/ciaranj/node-oauth/blob/master/lib/oauth2.js#L153

person Grimtech    schedule 17.08.2014