2016-09-21 50 views
0

我使用app.UseCookieAuthentication如下(只是一个简单的例子);CookieAuthentication中间件提供的cookie是否安全?

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, "[email protected]") 
}; 
var claimsIdentity = new ClaimsIdentity(claimCollection); 
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity); 

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

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

现在的问题是:这样生成的cookie安全吗?我的意思是ASP.NET以某种方式加密它,所以最终用户不能以某种方式手动修改它,例如,服务器会认为用户是管理员? 服务器会在用户修改Cookie时注意到Cookie被损坏吗?

回答

1

是的。

是的,它是加密的,所以你看不到内容。

是的,它被签名,所以会被检测到篡改。