У меня есть интересный сценарий, по которому я хочу получить некоторые указания.
В настоящее время я реализовал 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));
Есть ли более простой способ проверки клиентов только с идентификатором клиента (без секретов) для режимов javascript, поскольку хранение секретов практически невозможно в средах js?
Я упускаю что-то очевидное, что я мог бы сделать, чтобы упростить этот процесс?
Думаю, мы со всем разобрались в плане создания виджета JSONP, но эта часть меня немного смутила.
Любая помощь будет очень признательна!
Черц, Ануп