Мне нужны были необычные логины авторизации c, поэтому я добавил свой собственный AuthorizationHandler (https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1). По сути, суть в том, что вы добавляете в свой API атрибут, который задает необходимый набор разрешений, а пользовательский лог c просто гарантирует, что у пользователя есть эти разрешения.
[CustomAttribute("PermissionX", "PermissionY")]
MyApi()
Это обеспечит наличие у пользователя PermissionX и PermissionY, в противном случае запрос к этому API не будет выполнен. Моя проблема в том, что когда пользователь вызывает этот API, он просто возвращает 403 без какой-либо информации. Если у пользователя есть PermissionX, но нет PermissionY, я бы хотел, чтобы 403 имел сообщение типа «Отсутствует разрешение Y» вместо просто обобщенного c 403.
Я нашел несколько старых дискуссий по этому поводу. от нескольких лет до go, но вывод заключался в том, что решение находилось в процессе разработки, и это еще не было возможно. Это было какое-то время go, и я не видел никаких последних обновлений. Есть ли способ сделать это еще? Я в порядке, добавив промежуточное ПО более высокого уровня, я просто не знаю, как это будет работать прямо сейчас.