ASP.NET 5中的身份验证(vNext)
我有一个传统的ASP.NET应用程序,我想转移到ASP.NET 5(vNext) 。 我正在做这个学习练习。
我目前的应用程序使用基于表单的认证。 不过,我想使用OAuth。 我在看安全模块,并且很好奇OAuth应该使用什么。 我看到了Microsoft.AspNet.Authentication.OAuth
和Microsoft.AspNet.Authentication.OAuthBearer
的选项。
其中哪些用于让用户登录?
有谁知道一个示例/示例显示这些在行动?
Microsoft.AspNet.Authentication.OAuth
一旦您的用户被第三方认证, OWIN中间件就会读取他们的OAuth cookie并创建一个特定于域的基于声明的Cookie。 只要cookie可用(存在,未过期和未损坏),您的用户仍保持身份验证。
ASP.NET 5通用OAuth提供程序简介
Microsoft.AspNet.Authentication.OAuthBearer
创建持票人令牌。 当用户登录到终点( Web-API )或由第三方进行身份验证时, OWIN中间件会返回一个不记名令牌。 不记名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 方案资源小号哈林)更容易受到CSRF和跨站脚本攻击。
许多应用程序同时使用:
通常的做法是对页面请求使用cookie认证,对AJAX请求使用承载令牌。
您需要区分使用Cookie的资源和使用令牌的资源。
在这个Stackoverflow的答案中,Matt DeKrey做了一个很好的概述了他的实现
[Authorize("Bearer")]
对于应使用承载令牌的控制器或方法而不是基于[Authorize]
属性的标准Cookie。
许多应用程序仅依靠Cookie:
依赖Cookie时,您的应用程序对CSRF攻击的威胁程度如何? 这是有争议的。 许多网站仅依靠cookie而不会面临问题。 答案可能更多取决于您的流量级别和安全需求。
如果您正在为成千上万的用户开发一个网站,那么您可能安全地依赖于Cookie。
如果您为数百万用户提供服务或保护重要的财务数据,则异步呼叫应依赖持票人令牌。
注意:您提到使用表单身份验证,我强烈建议使用身份 。 该框架与OWIN开箱即可集成,为您提供两种类型的功能。
链接地址: http://www.djcxy.com/p/22379.html