Я пытаюсь понять новый процесс аутентификации идентификатора новичка OWIN в шаблоне приложения одиночной страницы в MVC 5. Пожалуйста, исправьте меня, если я ошибаюсь, для потока аутентификации пароля пользователя OAuth аутентификация маркера на предъявителя работает, проверяя http заголовок запроса авторизации для кода токена доступа, чтобы проверить, проверен ли запрос, он не полагается на файл cookie для проверки подлинности конкретного запроса.
В соответствии с этим сообщением:
Аутентификация маркера на предъявителя OWIN с помощью Web API Пример
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
using (IdentityManager identityManager = _identityManagerFactory.CreateStoreManager())
{
if (!await identityManager.Passwords.CheckPasswordAsync(context.UserName, context.Password))
{
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}
string userId = await identityManager.Logins.GetUserIdForLocalLoginAsync(context.UserName);
IEnumerable<Claim> claims = await GetClaimsAsync(identityManager, userId);
ClaimsIdentity oAuthIdentity = CreateIdentity(identityManager, claims,
context.Options.AuthenticationType);
ClaimsIdentity cookiesIdentity = CreateIdentity(identityManager, claims,
_cookieOptions.AuthenticationType);
AuthenticationProperties properties = await CreatePropertiesAsync(identityManager, userId);
AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
context.Validated(ticket);
context.Request.Context.Authentication.SignIn(cookiesIdentity);
}
}
Функция GrantReourceOwnerCredentials не только составляет билет с этой строкой: context.Validated(ticket); но он также составляет идентификатор файла cookie и устанавливает его в файл cookie с помощью этой строки: context.Request.Context.Authentication.SignIn(cookieIdentity);
Итак, мои вопросы: какова цель cookie в этой функции? Должен ли AuthenticationTicket быть достаточно хорошим для целей аутентификации?