xam*_*per 15 c# asp.net oauth asp.net-core-mvc asp.net-core
我有一个传统的ASP.NET应用程序,我想转移到ASP.NET 5(vNext).我这样做是为了学习练习.
我当前的应用使用基于表单的身份验证.但是,我想使用OAuth.我正在查看安全模块,很好奇应该用于OAuth.我看到的选项Microsoft.AspNet.Authentication.OAuth和Microsoft.AspNet.Authentication.OAuthBearer.
以下哪些用于让用户登录?
有没有人知道显示这些实际情况的样本/示例?
Dav*_*ich 12
Microsoft.AspNet.Authentication.OAuth
一旦您的用户被第三方认证,OWIN中间件就会读取他们的OAuth cookie并创建一个特定于域的声明式cookie.只要cookie可用(存在,未过期且未损坏),您的用户将保持身份验证.
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()
};
});
Run Code Online (Sandbox Code Playgroud)
创建SPA(单页应用程序)或保护AJAX请求时使用承载令牌.
Cookie身份验证被认为适用于服务器请求.但服务端点(无论它们是否允许Ç罗斯ö rigin ř esource 小号哈林)更容易受到CSRF和XSS攻击.
许多应用使用两者:
通常的做法是对页面请求和承载令牌使用cookie身份验证以获取AJAX请求.
您需要区分使用Cookie的资源和使用令牌的资源.
在这个Stackoverflow的答案中,Matt DeKrey在概述他的实现方面做得很好
[Authorize("Bearer")]
对于应使用承载标记而非基于标准cookie的[Authorize]属性的控制器或方法.
许多应用程序仅依赖于Cookie:
在依赖cookie时,您的应用程序对CSRF攻击有多脆弱?这是值得商榷的.许多网站单独依赖cookie,从不面临问题.答案可能更多地取决于您的流量级别和安全需求.
如果您正在为成千上万的用户开发一个站点,那么您可以安全地依赖cookie.
如果您为数百万用户提供服务或保护重要的财务数据,则异步调用应依赖于承载令牌.
注意:您提到使用表单身份验证,我强烈建议您使用身份.该框架与开箱即用的OWIN集成,为您提供两种类型的功能.
| 归档时间: |
|
| 查看次数: |
5532 次 |
| 最近记录: |