一般在webapi接口中,为了防止接口被随意调用,都会验证用户身份。
然而不能每次调用接口都需要用户输入用户名密码来验证,这时就需要授权颁发令牌了,持有令牌就可以访问接口,接口也能验证令牌身份。
简单流程
1、新建一个webapi项目,添加以下nuget包
Microsoft.Owin.Security.OAuth
Microsoft.AspNet.WebApi.Owin
Microsoft.Owin.Host.SystemWeb
(这个是让owin可以跑在IIS上)
2、新建OAuthServerProvider
类继承Microsoft.Owin.Security.OAuth.OAuthAuthorizationServerProvider
,重写ValidateClientAuthentication
和GrantResourceOwnerCredentials
方法。
实现验证与授权。
3、新建RefreshTokenServerProvider
类继承Microsoft.Owin.Security.Infrastructure.AuthenticationTokenProvider
,重写Create
和Receive
方法。
实现刷新token的自定义生成和验证。
4、新建AccessTokenServerProvider
类继承Microsoft.Owin.Security.Infrastructure.AuthenticationTokenProvider
,重写Create
方法。
实现访问token的自定义生成。
5、新建Startup
类。配置OAuth启用OAuthServer。
6、资源服务器启用OAuthBearer。
7、新建OAuthAttribute
类继承System.Web.Http.AuthorizeAttribute
,重写IsAuthorized
方法。
实现自定义验证规则。
8、资源接口启用OAuthAttribute
限制。