Сохраните заявки в COOKIE в ASP.NET CORE 2.1
После успешной аутентификации мне нужно аутентифицировать пользователя из Identity Provider, используя OpenID connect. Мне нужно сохранить претензии пользователя в куки.
Но я не нахожу метод добавления в Request.Cookies, который принимает три аргумента, я могу только передать keyvaluepair в качестве аргумента signle.
Вот мой код
public IActionResult Login(string provider, string returnUrl = null)
{
Challenge(new AuthenticationProperties { RedirectUri = returnUrl ?? "/" }, provider);
Request.Cookies.Append("key", "value", new CookieOptions());
return View();
}
Я также должен подтвердить, что где я должен написать код для хранилища COOKIE, чтобы он не мог быть сохранен снова после успешной аутентификации.
Вот мой код для аутентификации
services.AddAuthentication(options =>
{
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddOpenIdConnect(options =>
{
options.Authority = "https://accounts.google.com";
options.ClientId = _clientID;
options.ResponseType = "code id_token";
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
options.SaveTokens = true;
options.ClientSecret = _clientSecret;
//options.GetClaimsFromUserInfoEndpoint = true;
options.CallbackPath = "/home/index";
//options.SignedOutRedirectUri = redirectUrl;
options.Events = new OpenIdConnectEvents()
{
// handle the logout redirection
OnRedirectToIdentityProviderForSignOut = context =>
{
context.Response.Redirect(redirectUrl);
context.HandleResponse();
return Task.CompletedTask;
}
};
}).AddCookie(options => {
options.LoginPath = "/auth/signin";
});
заранее спасибо.
1 ответ
Не храните заявки в cookie-файле самостоятельно, потому что конечный пользователь может изменить cookie-файл. Что если я изменю cookie и добавлю претензию Role, Administrator
(или любую другую концепцию, которую вы используете в своем приложении для представления прав доступа).
Используйте предоставленный обработчик файлов cookie для хранения заявок после проверки подлинности. Вот как модель предназначена для использования. Обработчик файлов cookie зашифрует и подпишет содержимое, чтобы защитить его от подделки.
Обновить после редактирования
С вашим кодом вы уже сохраняете результат аутентификации в Cookie, благодаря DefaultSigninScheme
,
Полученные претензии должны быть доступны в User
поставляется в последующих запросах.