В настоящее время я использую 3 промежуточных ПО в своем приложении .netcore api.
app.UseAuthentication();
app.UseMultiTenancy();
app.UseMvc();
Насколько я понимаю, каждое промежуточное ПО запускается в той последовательности, в которой они добавляются в конвейер.
По некоторым причинам UseMultiTenancy запускается до UseAuthentication. Обратите внимание, все мои контроллеры API отмечены атрибутами авторизации.
Я ожидал, что промежуточное программное обеспечение аутентификации проверит, прошел ли пользователь аутентификацию, а затем вызовет UseMultiTenancy.
Это правильное понимание? Если нет, есть ли способ запустить UseMultiTenancy после аутентификации?
Есть ли у вас какая-либо детальная авторизация или вам требуется только аутентификация пользователей?
Я просто хочу получить доступ к заявкам пользователя. Из заявки я хочу получить subjectId. Похоже, что единственный способ получить доступ к утверждениям - это когда пользователь аутентифицирован.
У меня есть еще один класс обслуживания - ITenantService. Я планирую установить userId, который я получил из токена в этом классе службы, вместе с некоторой настраиваемой информацией заголовка http. Эта служба используется внутри моего dbcontext
Затем мой dbcontext считывает значения внутри класса обслуживания и передает их в sp_set_session_context для обеспечения безопасности на уровне строк.
UseAuthentication загрузит утверждения, если вы настроили схему по умолчанию. Чего он не будет делать, так это отклонить анонимных пользователей, это авторизация. Вы можете добавить простое промежуточное ПО после UseAuthentication, которое бросает вызов анонимным пользователям.





Нет, авторизация не проверяется, пока вы не дойдете до контроллера.