ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证 (2)

  这个很好理解,第三方应用通过Access Token去获取受保护的资源,但是Access Token是存在有效期的,一旦过期就无法使用,为了避免Access Token过期后无法使用,所以加入了Refresh Token的概念,通过刷新的方式来完成Access Token的更新。

5. Client的注册

  在OAuth2.0中,所有需要访问受限资源的程序都视为第三方应用(Client),为了保证这个Client是安全的、可信任的,所以OAuth需要对Client进行管理。参考:

6. OAuth的终结点

  这里终结点代表的是HTTP资源,在OAuth授权过程中需要使用到一些终结点的支持,如Authorization code(授权码)的获取,以及Access Token的获取,终结点由授权服务器提供。参考:

7. Access Token Type

  Access Token的类型是让Client根据具体类型来使用Access Token完成对受保护资源的请求。
  OAuth2.0中有两种类型分别是Bearer和Mac,它们体现方式如下:
   ● Bearer:

  

ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证

    ● Mac:

  

ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证

  参考:https://tools.ietf.org/html/rfc6750

在.Net中使用OAuth实现基于授权码模式的身份验证

  OAuth2.0是一个开放标准,既然是标准那么就可以有实现,在.Net中微软基于Owin实现了OAuth2.0协议,下面就介绍如何在ASP.NET MVC程序中实现OAuth身份验证。
  注:本例基于ASP.NET MVC默认带身份验证模板完成。

1. 组件安装

  通过NuGet安装Microsoft.Owin.Security.OAuth组件:

  

ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证

  注:从该组件的名称可以看出,.Net对OAuth的实现实际上是基于Owin的,所以很多内容均使用Owin中相关的身份验证概念,这些内容可参考本系列与身份验证的文章。

2. 添加OAuth授权服务器

  根据上面OAuth的介绍可知,授权服务器是OAuth其中一个角色,该角色最主要的功能就是Access Token的发放以及授权,另外它还用于支持授权码模式的授权码发放以及Client的管理
  在Startup类型的Configuration方法中加入以下代码,该代码是为Owin中间件添加一个授权服务器(注:该中间件是一个Owin的身份验证中间件可参考《ASP.NET没有魔法——ASP.NET Identity 的“多重”身份验证)。

  

ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证

  其中OAuthAuthorizationServerOptions定义如下:

  

ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证

  上面的定义可以分为以下几类:
  ● 终结点地址:AuthorizeEndpointPath、TokenEndpointPath等,它定义了访问获取授权码以及获取Token的地址信息。
  ● Token提供器:AuthorizationCodeProvider、AccessTokenProvider、RefreshTokenProvider负责完成对应令牌的创建和处理功能。
  ● Token的“加密”与“解密”:该功能是OAuth与Owin身份验证的结合,通过AccessTokenFormat等ISecureDataFormat接口的实现可以将对应的Token转换成一个  AuthenticationTicket。可参考《ASP.NET没有魔法——ASP.NET Identity的加密与解密》文中TicketDataFormat的用法。
  ● OAuth授权服务:Provider是整个OAuth服务器的核心,它包含了终结点的处理与响应、OAuth中的4种Access Token授权方式刷新令牌获取Access Token的方式以及请求、客户端的相关验证

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyxzw.html