Ключи API в дополнение к OAuth OWIN/Web Api

У меня есть интересный сценарий, по которому я хочу получить некоторые указания.

В настоящее время я реализовал OAuth, используя стандартную функциональность OWIN с веб-API и ASP.NET Identity. Также успешно реализована функция учетных данных клиента, которая позволяет клиентам (таким как браузеры и iPhone) выполнять доступ к API для анонимного режима операций до тех пор, пока не произойдет вход в систему RO.

Теперь у нас есть сценарий, в котором мы хотим создать виджет javascript (JSONP), аналогичный виджету Stripe Checkout (https://stripe.com/docs/checkout). Как вы увидите, этот виджет можно довольно легко внедрить, предоставив простой атрибут data-key как часть тега script. Я предполагаю, что это создается в бэкэнде как простой ключ API, но в дополнение к списку зарегистрированных доменов, из которых его можно вызывать. Когда этот ключ передается в API, API сверяет его с доменом, из которого был сделан запрос, чтобы убедиться, что API может получить доступ к необходимым ресурсам, предоставленным ключу.

Мои вопросы: 1. Как я могу реализовать ключ API в дополнение к токенам носителя OAuth в конвейере OWIN? Вся документация, которую я вижу, обычно предлагает написать отдельный обработчик делегата для поиска ключей и т. д., но разве мой конвейер OWIN не зайдет так далеко, потому что вызов самого действия не авторизован? 2. Мы также явно удаляем любую другую аутентификацию, кроме OAuth, в следующих строках кода:

   config.SuppressDefaultHostAuthentication();
   config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
  1. Есть ли более простой способ проверки клиентов только с идентификатором клиента (без секретов) для режимов javascript, поскольку хранение секретов практически невозможно в средах js?

  2. Я упускаю что-то очевидное, что я мог бы сделать, чтобы упростить этот процесс?

Думаю, мы со всем разобрались в плане создания виджета JSONP, но эта часть меня немного смутила.

Любая помощь будет очень признательна!

Черц, Ануп


person Anup Marwadi    schedule 27.04.2015    source источник
comment
❓Вы решили свою проблему?   -  person Sergio López    schedule 23.07.2016


Ответы (1)


Поскольку Owin является конвейером, все промежуточные программы аутентификации выполняются при каждом запросе. В вашем примере запрос может прийти с ключом API в заголовке: первым промежуточным программным обеспечением аутентификации может быть ваша аутентификация oauth/bearer. запрос продолжается по конвейеру. Следующим промежуточным программным обеспечением может быть какое-либо промежуточное программное обеспечение для аутентификации ключа API (вы можете найти реализацию здесь: https://github.com/jamesharling/Microsoft.Owin.Security.ApiKey), который обнаружит заголовок вашего ключа API и прикрепит соответствующий идентификатор к запросу.

person James    schedule 27.06.2017
comment
Это репо теперь 404 :( - person rainabba; 03.07.2021