OpenIddict с двухфакторной аутентификацией
Ну, название в значительной степени объясняет все это, но вот что я пытаюсь сделать:
Я работаю над приложением ASP.NET Core 1.0, которое должно поддерживать аутентификацию с помощью JWT. Это очень легко сделать с помощью OpenIddict, но OpenIddict - одна из тех фреймворков, которые "волшебно работают в фоновом режиме".
Я хотел бы сохранить простоту OpenIddict, но изменить его поведение по умолчанию, используя Identity и его функции двухфакторной аутентификации, а не просто имя пользователя / пароль для входа.
Я не нашел способа предоставить собственный менеджер входа в систему для OpenIddict. Есть кто-нибудь, кто имеет опыт работы с этим?
1 ответ
Это очень легко сделать с помощью OpenIddict, но OpenIddict - одна из тех фреймворков, которые "волшебно работают в фоновом режиме".
Да, это так, потому что он был разработан для использования людьми, которые понятия не имеют, как работают OAuth2 или OpenID Connect, и именно поэтому большинство деталей протокола намеренно скрыты (и, следовательно, почему классы, которые обрабатывают запросы / ответы OIDC, намеренно несменный).
Я хотел бы сохранить простоту OpenIddict, но изменить его поведение по умолчанию, используя Identity и его функции двухфакторной аутентификации, а не просто имя пользователя / пароль для входа.
Если вам легко, я предполагаю, что вы используете "грант на получение пароля владельца ресурса", продемонстрированный в ряде постов в блоге (например, http://capesean.co.za/blog/asp-net-5-jwt-tokens/ или http://kerryritter.com/authorizing-your-net-core-mvc6-api-requests-with-openiddict-and-identity/)
К сожалению, это (простое) предоставление OAuth2 несовместимо с двухфакторной аутентификацией.
Вместо этого я бы рекомендовал переключиться на интерактивный поток, такой как неявный код или код авторизации, который позволит вам поддерживать этот сценарий (поскольку в этом случае вы отвечаете за часть входа в систему).
Для получения дополнительной информации вы можете взглянуть на этот образец. Это просто опирается на AccountController
который поставляется с шаблонами VS по умолчанию для входа в систему и включает в себя специальный AuthorizationController
это обрабатывает часть авторизации.
2-FA изначально поддерживается AccountController
поэтому вам не нужно ничего реализовывать, чтобы включить это в вашем приложении.