Как использовать внешнюю авторизацию OAuth в проекте MVC, который не является твиттером, facebook или microsoft?

Мне нужно обновить мой MVC-процесс, чтобы обеспечить внешний процесс OAuth, как описано в учебниках, таких как этот. Тем не менее, каждый учебник, который я нахожу, использует facebook/twitter/Microsoft, который уже встроен в функции. Мне нужно использовать другой сервер и передать токен. И я клиент, а не сервер.

Моя настройка использует стандартный проект SPA с логином и т.д. Мне нужно будет перенаправить его на страницу с токеном обновления и сохранить этот токен обновления для моих будущих запросов к API. У меня нет проблем с этим, я просто не могу сделать первый вызов OAuth. И кажется, Я не единственный, у кого есть эта проблема.

Для этого запроса поставщику OAuth 2.0 мне придется добавить токен доступа к запросу, затем пользователь может войти в систему и нажать "Разрешить/запретить".

POST {TokenPath} HTTP/1.1
Host: {AuthorizationServer}
Authorization: Basic {ThirdPartyAuthorizationCode}
Content-Type: application/x-www-form-urlencoded

grant_type = authorization_code

Затем я получаю ответ от POST с access_token и датой истечения срока действия.

Итак, как я могу это сделать?

Ответ 1

Вы можете использовать сторонние маркеры OAuth на Apigee. Чтобы использовать маркеры сторонних систем OAuth в Apigee Edge, вам нужно сделать следующее:

Настройте политику OAuthV2, которая генерирует токены с помощью < Элемент ExternalAuthorization > установлен в значение true. Если этот элемент является ложным или нет, то Edge обычно проверяет client_id и client_secret в отношении хранилища авторизации Apigee Edge.   Установите внутреннюю переменную потока oauth_external_authorization_status в true. Если это значение является ложным (или если переменная отсутствует), Edge предполагает, что авторизация третьей стороны завершилась неудачно и возвращает сообщение об ошибке.

Как правило, эта переменная устанавливается в true или false на основе служебной выноски сторонней службе авторизации. Вы можете посмотреть ответ на вызов службы и установить соответствующую переменную. Ознакомьтесь с политикой ServiceCallout. Другой способ установки этой переменной - использовать политику AssignMessage с элементом AssignVariable, например:

  <AssignMessage name="AssignMessage-SetVariable">
<DisplayName>Assign Message - Set Variable</DisplayName>
<AssignVariable>
    <Name>oauth_external_authorization_status</Name>
    <Value>true</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>

Обратитесь к следующей ссылке:

Использование сторонних токенов OAuth