ASP.NET 5中的身份验证(vNext)

我有一个传统的ASP.NET应用程序,我想转移到ASP.NET 5(vNext) 。 我正在做这个学习练习。

我目前的应用程序使用基于表单的认证。 不过,我想使用OAuth。 我在看安全模块,并且很好奇OAuth应该使用什么。 我看到了Microsoft.AspNet.Authentication.OAuthMicrosoft.AspNet.Authentication.OAuthBearer的选项。

其中哪些用于让用户登录?

有谁知道一个示例/示例显示这些在行动?


Microsoft.AspNet.Authentication.OAuth

  • 允许第三方标识符(例如GoogleFacebook )为您验证用户身份,为用户节省注册烦恼。
  • 允许其他应用使用您的应用进行身份验证
  • 一旦您的用户被第三方认证, 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

    上一篇: Authentication in ASP.NET 5 (vNext)

    下一篇: JWT Token in POSTMAN Header