Создание собственной политики для проверки guid по базе данных - PullRequest
0 голосов
/ 02 апреля 2020

Допустим, у меня есть база данных с двумя таблицами, Users и AccessTokens. Каждый пользователь имеет доступ к AccessToken. Этот токен доступа является просто случайной строкой, он не имеет никаких претензий или чего-либо еще, он также может быть "ab c".

Я уже использую. NET аутентификация JWT по умолчанию для аутентификации пользователей по Azure AD с тегом [Authorize]. У меня также есть одна настраиваемая политика, которая проверяет, находится ли пользователь в группе администраторов в Azure AD с тегом [AuthorizeAdmin].

Теперь я пытаюсь создать настраиваемую политику, которая проверяет что пользователь, пытающийся получить доступ к конечной точке, имеет AccessToken в базе данных, и что идентификатор пользователя в этом AccessToken совпадает с идентификатором пользователя, пытающегося войти в систему, например, с помощью тега [AuthorizeToken]. Однако этот тег [AuthorizeToken] должен сначала попытаться проверить пользователя, используя текущую реализованную аутентификацию с JWT и Azure AD, и все это, и если это не удастся, он должен проверить «токен» (строку) в заголовке авторизации. Поэтому мне нужна политика, которая берет пользователя из контекста http и заголовка авторизации в качестве аргументов, а также обращается к моей базе данных.

Ответы, которые я нашел до сих пор (такие как: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1) не имеют объяснения того, как реализовать базы данных в пользовательских политиках или как связать цепочки аутентификаций, чтобы в случае неудачи перейти к следующей.

Любая помощь здесь приветствуется, поскольку я чувствую себя застрявшим.

...