Таким образом, пользователи проходят аутентификацию с использованием AAD, но мне нужно получить роль, которой они были распределены в базе данных.
Я попытался добавить это к своему openIdConnectAuthenticationOptions
в моем Startup.Auth
, как предлагалось в некоторыхposts:
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = false, // Simplification (see note below)
//RoleClaimType = System.Security.Claims.ClaimTypes.Role
RoleClaimType = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role"
} Но при проверке заявок во время отладки роль не отображается.Я предполагаю, что это потому, что при использовании SignInManager
вход в систему не происходит, поэтому я попытался выполнить фактический вход после успешной аутентификации AAD, поскольку у меня есть идентификатор пользователя из БД:
var user = db.Users.Where(x => x.Id == loggedInUserId).FirstOrDefault();
var userForIdentity = UserManager.FindById(user.Id);
if (user != null)
{
await SignInManager.SignInAsync(user, true, true);
}
Я подумал, что если я сделаю вышеупомянутое после входа в AAD, то роль будет добавлена, чтобы я мог, например, использовать User.IsInRole («Администратор»), но, похоже, он его не добавляет.
Я видел некоторые сообщения, в которых говорится, что мы можем редактировать манифест в Azure AD в приложении, которое было зарегистрировано, но у меня нет доступа к клиентам AAD.
У меня вопрос, есть ли способиспользовать User.IsInRole ("") в зависимости от того, что находится в БД после входа в AAD?
Спасибо за любую помощь.