2

Я пытаюсь переписать некоторую авторизацию, которую я имею в настоящее время для ASP.NET 4.6 в ASP.NET Core.Авторизовать пользователя на основе API-ключа, поставляемого в заголовке запроса в ASP.NET Core

Я понимаю, что авторизация немного изменилась, и мне сложно реализовать мою очень простую стратегию аутентификации в ASP.NET Core.

Мои требования:

Каждый запрос на сервер должен включать в себя заголовок, называемый «ключ». Основываясь на значении этого ключа, я смогу запросить базу данных и проверить, является ли этот ключ обычным пользователем или администратором. Если запрос не содержит действительного ключа, запрос не разрешен.

Как бы реализовать это в ASP.NET Core? Каждый пример, который я нахожу, кажется совершенно излишним для моих потребностей.

В ASP.NET 4.6 я использовал свои собственные атрибуты AuthorizeAttributes для использования на моих контроллерах, например.

[User] 
public IHttpActionResult DoSomethingOnlyUsersCanDo() {} 

и

[Admin] 
public IHttpActionResult DoSomethingOnlyAdminsCanDo() {} 

Могу ли я сделать то же самое в ASP.NET Ядра?

ответ

2

В ядре ASP.NET рекомендуется, чтобы вы не наследовали от AuthorizeAttribute. Вместо этого вы можете настраивать политики авторизации: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims.

Вам понадобится промежуточное программное обеспечение для аутентификации, которое создаст свойство ClaimsIdentity для пользователя на основе заголовка. Затем вы можете создавать политики, которые утверждают существование определенных требований к пользователю.

+7

Некоторый код и ссылки были бы очень полезны ... –