Я внедрил custom OAuthAuthorizationServerProvider
, чтобы добавить ограничение домена для входа в учетную запись. Все было хорошо. Однако я столкнулся с проблемой, что, как только пользователь получит токен, они могут использовать его для любой системы, которую они хотят. Например:Как повторно проверить токен для многопользовательской идентификации ASP.NET?
Они запрашивают TokenEndpointPath
с правильным именем пользователя и паролем (предположим, что это учетная запись администратора Арендатора 1): http://localhost:40721/api/v1/account/auth и получить токен-носитель.
Теперь они используют его для доступа: http://localhost:40720/api/v1/info/admin, который принадлежит арендатору 0. Запрос считается авторизованным.
Я попытался изменить метод CreateProperties
, но это не помогло:
public static AuthenticationProperties CreateProperties(string userName)
{
var tenant = DependencyUtils.Resolve<IdentityTenant>();
IDictionary<string, string> data = new Dictionary<string, string>
{
{ "userName", userName },
{ "tenantId", tenant.Tenant.Id.ToString() },
};
return new AuthenticationProperties(data);
}
Я также попытался перекрывая ValidateAuthorizeRequest
, но он никогда не вызывается в моей отладки.
Нужно ли мне выполнять проверку в другом месте, поэтому токен действителен только для домена/правильного арендатора?
(ПРИМЕЧАНИЕ. У арендатора может быть несколько доменов, поэтому отлично, если я могу вручную выполнить проверку учетной записи против правильного арендатора, а не придерживаться домена. Однако это плюс, если я могу это сделать, или просто просто ограничить токен доменом нормально)