У меня есть этот код, который должен устанавливать претензии для пользователя. Он отлично работает, когда я использую личность и логин по умолчанию. Однако, когда я использую jwt в качестве аутентификации в другом приложении, у меня нет ApplicationUser, поскольку мой ApplicationUser хранится в другом приложении, которое аутентифицирует пользователя. Как я могу настроить этот код так, чтобы он работал с jwt?
private readonly SignInManager<TIdentityUser> _signInManager;
public CustomClaimsCookieSignInHelper(SignInManager<TIdentityUser> signInManager)
{
_signInManager = signInManager;
}
public async Task SignInUserAsync(TIdentityUser user, bool isPersistent, IEnumerable<Claim> customClaims)
{
var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(user);
var identity = claimsPrincipal.Identity as ClaimsIdentity;
var claims = (from c in claimsPrincipal.Claims select c).ToList();
var savedClaims = claims;
if (customClaims != null)
{
identity.AddClaims(customClaims);
}
await _signInManager.Context.SignInAsync(IdentityConstants.ApplicationScheme,
claimsPrincipal,
new AuthenticationProperties { IsPersistent = isPersistent });
}
Полагаю, что мое основное намерение состоит в том, чтобы устанавливать заявки пользователей в httpcontext, а не в cookie, и я хочу сделать это без использования идентификатора.
РЕДАКТИРОВАТЬ:
Моя структура приложения
AuthenticationApp (сервер)
- Ответственный за аутентификацию пользователей
- Генерирует и декодирует JWT
- Проверяет, есть ли у пользователя соответствующие роли, и возвращает true / false через rest api
MainApp (клиент)
- делает вызов API для AuthenticationApp
- Не использует личность вообще
- Отправляет Jwt каждый раз, когда мне нужно проверить роль пользователя
Я понимаю, что смогу декодировать клиентскую часть jwt. Тем не менее, я не знаю, где я могу хранить декодированные детали JWT, чтобы я мог использовать его в представлении. Моя первоначальная идея состояла в том, чтобы использовать Httpcontext как обычные приложения, которые идентифицируют пользователя. Однако я застрял с кодом выше.