170 похожих чатов

С бодрым. Есть ASP .NET Core 6-ой, Web API. Хочу реализовать

авторизацию в API'шке, без аутентификации (мне в целом всё равно кто авторизуется, но я хочу в случае чего отозвать доступ). Как хочу авторизовывать - проверить, что токен в Authorization-хедере содержит нужный мне идентификатор.
Звучит, конечно, как необходимость завести одного-единственного юзера, дать ему необходимые доступы и т.д. Но я не хочу усложнять: кастомные requirement, claim'ы - выглядит слишком сложновато для моей задачи.

https://stackoverflow.com/questions/31464359/how-do-you-create-a-custom-authorizeattribute-in-asp-net-core

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-6.0

Как я прочитал по ссылкам выше, мне нужно использовать политики - без вариантов.

Думал отделаться малой кровью. Вижу у AuthorizationPolicyBuilder метод RequireAssertion. Глянул AuthorizationHandlerContext на MSDN - похоже мне это тоже не поможет.

Вопросы:
1. Возможно ли без пользователей/ролей/etc, средствами AuthorizationMiddleware, добиться того, что я хочу - авторизовать любой запрос, если есть нужное значение в хедере?
2. Обязательно ли использовать AuthenticationMiddleware при авторизации? Я убрал из main-а код app.UseAuthentication();, но всё равно получаю ошибку, что не добавил хендлер аутентификации (см. скрин).

Предложили в фиолетовом TypeFilterAttribute, но я пока не понял как его применить. Может у кого есть ещё варианты?

13 ответов

9 просмотров

2 - да

если ты хочешь просто значение в хедере проверить, то мб свою мидлварю и напишешь, которая это чекает?

1 - это немного ортогональная вещь

Konstantin-Redkin Автор вопроса
βλαδιμιρ
если ты хочешь просто значение в хедере проверить,...

Думал о таком. Но я хочу в случае чего поменять политику, а с ней и способ авторизации. Потому что вариант "один токен - все запросы" лишь на время MVP.

βλαδιμιρ
если ты хочешь просто значение в хедере проверить,...

Мне таких мидлварей примерно в 50 бинарников напихали, размазанных по +- 20 репозиториям, второй год хожу выпиливаю

Konstantin-Redkin Автор вопроса
Roman Bukin
2 - да

Тогда почему не объединили UseAuthorization и UseAuthentication в одну сущность? Если получается одно без другого не очень-то и работает.

βλαδιμιρ
если ты хочешь просто значение в хедере проверить,...

За такие советы могу сжечь на костре свящённым огнём свидетелей секты драматического отличия аутентификации от авторизации

Konstantin Redkin
Тогда почему не объединили UseAuthorization и UseA...

Потому что у тебя может быть воткнута UseAuthentication, а следом мидлвара, которая смотрит в HttpContext.User и если у тебя скажем не пройдена 2FA - отправляет тебя принудительно её проходить, не давая ничего сделать

Roman Bukin
За такие советы могу сжечь на костре свящённым огн...

Ну если ему реально просто хочется различать анонимуса от доверенного человека (которому он дал хедер)

Roman Bukin
Потому что у тебя может быть воткнута UseAuthentic...

А уже следом авторизация с дефолтной политикой которая на логин отправляет, допустим

Konstantin-Redkin Автор вопроса
Roman Bukin
А уже следом авторизация с дефолтной политикой кот...

Тут не понял. "Следом авторизация" - всё ещё требует UseAuthorization, нет?

βλαδιμιρ
Ну если ему реально просто хочется различать анони...

Ну у нас всё так же начиналось, а теперь моя жизнь - это бесконечная выплата чужого техдолга по причине того что кто-то когда-то не осилил документацию

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта