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поэтому вам не нужно ничего реализовывать, чтобы включить это в вашем приложении.

Другие вопросы по тегам