Как записать, какие политики и претензии были проверены - PullRequest
1 голос
/ 25 февраля 2020

(это мой первый вопрос, большое спасибо за вашу помощь в правильном определении этого вопроса и согласовании рекомендаций)

Я создаю небольшое веб-приложение на основе ядра do tnet (3.1). Для управления доступом к моим контроллерам я использую этот вид декоратора:

[Authorize(Roles = "Administrator")]
public async Task<ActionResult<Stuff>> GetStuff(){
...

У меня есть пользовательский AuthenticationHandler, который извлекает мою роль и вводит ее в претензии.

Вся система работает как предполагалось. Например, если я выполняю вызов по этому маршруту (как администратор), я вижу это в журнале:

[12:46:59 INF] Request starting HTTP/1.1 GET http://localhost:5002/api/getstuff/  
[12:46:59 INF] Authorization was successful.

Если я делаю тот же запрос без роли администратора, я получаю это:

[12:46:59 INF] Request starting HTTP/1.1 GET http://localhost:5002/api/getstuff/  
[12:56:36 INF] Authorization failed.

Теперь, в целях моей проблемы, давайте добавим еще один декоратор:

[Authorize(Roles = "Administrator")]
[Authorize(Policy = "CustomAccessPolicy")]
public async Task<ActionResult<Stuff>> GetStuff(){
...

Вопрос

Вот моя проблема: если пользователь не соответствует CustomAccessPolicy ИЛИ если он / она не является администратором, я получу такой же журнал, что является проблемой для меня.

Что я могу сделать, чтобы получить более точный журнал, такой как:

[12:46:59 INF] Request starting HTTP/1.1 GET http://localhost:5002/api/getstuff/  
[12:56:36 INF] Checked Role: Administrator. Success.
[12:56:36 WRN] Check Policy CustomAccessPolicy: Failed!
[12:56:36 WRN] Authorization failed.

Как я могу получить этот точный журнал проверок политики / утверждений / авторизации?

Я считаю, что это может быть вопросом конфигурации (уровень журнала на какой-то компонент?), или, может быть, мне нужно переопределить какой-то метод / привязку к некоторым событиям?

Большое спасибо!

...