OAuth做webapi认证

看到园子里面有人写的OAuth,就想把自己实现的OAuth也分享一下,关于OAuth协议这里就不再赘述。

一、作为认证服务器,首先需要提供一个可以通过appid/appsecret来获取token这样的一个接口,于是便有了以下代码。

 

创建token的算法可以自行实现,我是将新生成的Guid做了一下md5处理,代码如下:

上文可以看到,在生成token了以后,就一个SetToken,就是将token存储在缓存里面,并设置了一定时间的生存周期,代码如下:

为什么要用token做key,是因为token的变更会导致isv token验证失效,但是用token做key就可以在存活周期内,这个key都可以使用,避免了多线程获取token,或是其他原因导致的token失效。作为认证服务器,还需要提供一个RefreshToken这样的接口,用来给刷新token的存活周期,代码相似这里就不再赘述。

二、在Api做验证的时候,就需要开始对Token进行验证了,代码如下:

使用比较传统的方式,继承于DelegatingHandler,然后进行处理,首先是做的IP验证,然后再进行token有效期验证,最后再进行Api的权限调用验证。验证的代码如下:

GetServerConfig()是从DB/Cache里面获取服务器的自定义配置,然后看是否开启ip白名单/黑名单,下面的代码同理,是否开启权限验证。

那认证服务器到这里实际上就结束了,关于isv申请appid/appsecret。然后用户同意授权以后,存储appid和user之间的关联关系,就需要看客自行实现了。

另外有一个扩展代码这里也提一下,就是关于ApiResponseEntity的返回值处理,代码如下:

本人对代码不做任何知识产权限制,也不保证所有的代码皆为原创。
 
 
标签: oauth

最新文章

  1. 推荐5个应用 jQuery 特效的精美特效
  2. PHP 更高效的字符长度判断方法(转)
  3. matlab的二维卷积操作
  4. Uva_11462 GCD - Extreme (II)
  5. Nginx学习笔记六Nginx的模块开发
  6. Javascript自由拖拽类
  7. ICSharpCode.SharpZipLib.Zip
  8. AngularJS 实战讲义笔记
  9. 毕业bg(dfs)
  10. application(CURD)--easyui
  11. [mysql]错误解决之"Failed to start MySQL Server"
  12. jmeter(四)参数化之CSV Data Set Config 和 CSVRead函数的区别
  13. 关于.net里面的静态html页面和接口组合使用的网站
  14. runOnUiThread更新主线程
  15. 【代码审计】EasySNS_V1.6远程图片本地化导致Getshell
  16. 【343】MathJax、LaTex、Mathml 数学公式
  17. JAVA核心技术I---JAVA开发环境配置
  18. VUE 学习笔记 二 生命周期
  19. JNLP文件具体说明编辑
  20. Mysql 数据库学习笔记05 触发器

热门文章

  1. 使用Nexus搭建企业maven仓库(二)
  2. Bootstrap之表格
  3. properties editor for eclipse安装使用
  4. mysql xtrabackup增量备份
  5. Oracle JDBC版本区别(转)
  6. linux环境下的线程的创建问题
  7. iOS国际化和genstrings所有子文件夹本地化字符串
  8. SQL Server :理解DCM页
  9. java线程例子登山
  10. Windows远程桌面连接Ubuntu 14.04 (转)