Я хочу создать свой собственный процесс аутентификации с использованием аутентификации на основе утверждений в моем проекте ASP.net MVC. Я хочу иметь возможность использовать атрибут авторизации (включая роли), например [Authorize(Roles="admin")]
и [Authorize(Roles="Frontenduser")]
, поскольку у меня будет несколько типов пользователей.
Я не хочу использовать идентификатор ASP.net, поскольку он делает слишком много, чем мне нужно. Мне также нужны совершенно разные данные для разных типов пользователей.
Я знаю, что могу наследовать от класса AuthorizeAttribute, но не уверен, как все это работает с утверждениями. Итак, во-первых, может ли кто-нибудь порекомендовать хороший пакет для использования аутентификации на основе утверждений, а во-вторых, как мне остановить работу атрибута Authorize с удостоверением ASP.net и заставить его работать с моей пользовательской аутентификацией на основе утверждений? Я просмотрел другие вопросы и другие решения в Интернете, но не могу найти подходящего объяснения или решения.
Вы можете использовать авторизацию на основе политик. Идентификация — это проверка подлинности и отличается от авторизации. Для этого вы можете создать политику в своем классе запуска. Это мой пример в сервисах настройки. Если вам не нужна Identity, вы можете использовать токены-носители JWT и просто создать политику. получите эти пакеты из nuget:
в вашей конфигурации
Добавить
Хорошо прочтите это:
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies
Отлично, это имеет смысл, и теперь я понимаю, как использовать утверждения и политики для авторизации, однако я думал, что токены-носители JWT используются только при доступе к контроллерам через ajax / js. В качестве альтернативы я захочу получить доступ к контроллерам напрямую, используя URL-адрес (ссылки) и через формы mvc. Для аутентификации знаете ли вы, как я могу использовать свою собственную систему, например, если у меня есть класс с методом, который сравнивает пароль пользователя с паролем базы данных, как я могу сообщить системе и атрибуту авторизации, если пользователь аутентифицирован или не аутентифицирован ? Имеет ли это смысл? Спасибо — person dan; 21.02.2018
Да, вы должны понимать, что аутентификация — это не авторизация. Аутентификация — это то, кем является пользователь, а Identity — отличная библиотека, которая помогает вам создавать и отслеживать пользователей. Авторизация — это то место, куда этот пользователь может перейти в приложении. В вашем приложении нет смысла выполнять всю эту работу с запросом пароля, пароли хешируются с помощью UserManager через Identity. Это все библиотеки, и я знаю, что это отстой, но просто не торопитесь и изучите или напишите собственную версию. Вы можете делать то, что хотите, с помощью наследования пользователя от IdentityUser, или вы можете добавить список утверждений и сделать роли для пользователей и использовать политику авторизации — person dan; 22.02.2018