CookieAuthentication中间件提供的cookie是否安全?

时间:2016-09-21 19:54:33

标签: asp.net cookies asp.net-core asp.net-authentication

我正在使用app.UseCookieAuthentication如下(只是一个简单的例子);

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
    AuthenticationScheme = "MyAuthScheme",
    AutomaticAuthenticate = true,
});

然后在某处我手动创建ClaimsPrincipal并登录用户:

var claimCollection = new List<Claim>() 
{
    new Claim(ClaimTypes.Name, "First user"),
    new Claim(ClaimTypes.Role, "User"),
    new Claim(ClaimTypes.Email, "first@user.com")
};
var claimsIdentity = new ClaimsIdentity(claimCollection);
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);

await context.Authentication.SignInAsync("MyAuthScheme", claimsPrincipal);

生成的cookie将包含有关用户角色的信息。

现在的问题是:这样生成的cookie是安全的吗?我的意思是ASP.NET以某种方式对其进行加密,因此最终用户无法以某种方式手动修改它,例如服务器会认为用户是管理员吗? 当用户修改cookie时,服务器是否会注意到cookie已损坏?

1 个答案:

答案 0 :(得分:1)

是的,它已加密,因此您无法看到内容。

是的,它已签名,因此将检测到篡改。