Microsoft.AspNet.Authentication.OAuth
- 允许第三方标识符(例如谷歌,Facebook的)来验证你的用户,节省了您的用户注册的烦恼。
- 允许其他应用程序使用应用程序的认证
一旦你的用户是通过第三方认证,则OWIN中间件读取其的OAuth饼干和创建基于声明的域特定的cookie 。只要cookie可用(存在,未过期和未损坏),您的用户仍保持身份验证。
An introduction to the ASP.NET 5 Generic OAuth Provider
Microsoft.AspNet.Authentication.OAuthBearer
创建承载的令牌。当用户登录终端点(Web-API)或由第三方进行身份验证时,中间件会返回一个不记名令牌。不记名Cookie会与所有服务请求一起发送,以识别您的用户。
在启动
app.UseOAuthBearerAuthentication(options =>
{
options.Authority = "http://localhost:5000/oauth/";
options.Audience = "http://localhost:5000/oauth/resources";
options.TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKeys = new[] { new X509SecurityKey(cert) },
ValidateLifetime = false,
};
options.AutomaticAuthentication = true;
options.SecurityTokenValidators = new[]
{
new JwtSecurityTokenHandler()
};
});
承载令牌创建SPA(单页应用程序)或用于固定AJAX请求时使用。
对于服务器请求,Cookie认证被认为是足够的。但服务端点(无论它们是否允许Ç罗斯ö rigin ř esource 小号哈林)更容易受到CSRF和XSS攻击。
许多应用程序同时使用:
通常的做法是使用Cookie身份验证的页面请求和承载令牌AJAX请求。
您需要区分使用Cookie的资源和使用令牌的资源。
在这种Stackoverflow answer,马特DeKrey做概述利用
[Authorize("Bearer")]
对于应该承载令牌使用而不是标准的基于Cookie的属性[Authorize]
控制器或方法实现了一个很好的工作。
许多应用程序依赖于单独饼干:
是多么脆弱的饼干依靠当你的应用程序CSRF攻击?这是有争议的。许多网站仅依靠cookie而不会面临问题。答案可能更多取决于您的流量级别和安全需求。
如果您正在为成千上万的用户开发一个站点,那么您可能安全地依靠cookie。
如果您正在为数百万用户提供服务或保护重要的财务数据,那么您的异步呼叫应该依赖于承载令牌。
注:你提到使用窗体身份验证,我会强烈建议使用身份。该框架与OWIN开箱即用,可为您提供两种类型的功能。
什么是默认机制标识使用?在ASP.NET 5中,如果我只是说app.UseIdentity()并使用[Authorize]属性,一切正常,但我怎么知道它是否使用基于Cookie或Token的身份验证? –
@VladimirDjurdjevic,默认为cookie认证。这是一个关于实现令牌认证的好帖子http://stackoverflow.com/questions/29048122/token-based-authentication-in-asp-net-5-vnext –