Hessian Token权限认证

简介:   博客分类: Hessian   添加Token验证,如何生成Token,计算方式如下,采用不可逆转的方式生成[MD5加密]: 服务器端存储Token,采用线程安全的Map 客户端在发送业务请求前,先去服务器端申请一个Token,然后发送请求时把token和业务类一起发送,这时...

 

博客分类:
 
添加Token验证,如何生成Token,计算方式如下,采用不可逆转的方式生成[MD5加密]: 
服务器端存储Token,采用线程安全的Map 
客户端在发送业务请求前,先去服务器端申请一个Token,然后发送请求时把token和业务类一起发送,这时会发送请求超时和权限验证,因为Token只有一次有效,废话不说,代码如下: 
Token接口: 
Java代码   收藏代码
  1. public interface TokenGenerator {  
  2.   
  3.     public String generatorToken(String userName);  
  4.       
  5.     public boolean validateToken(String token);   
  6. }  

Token实现类: 
Java代码   收藏代码
  1. public class TokenGeneratorImpl implements TokenGenerator {  
  2.    
  3.     Map<String, Date> tokenStore = new ConcurrentHashMap<String, Date>();  
  4.       
  5.     /** 
  6.      * 客户端发送请求得到token. 
  7.      * @param userName 
  8.      * @return 
  9.      */  
  10.     public String generatorToken(String userName){  
  11.         Date time = new Date();  
  12.         try {  
  13.             byte[] b =  (time + DigestUtils.md5Hex(userName)).getBytes("utf-8");  
  14.             String token = DigestUtils.md5Hex(b);   
  15.             tokenStore.put(token,time);//存储这个时间点的token  
  16.             return token;  
  17.         } catch (UnsupportedEncodingException e) {  
  18.             // TODO Auto-generated catch block  
  19.             e.printStackTrace();  
  20.         }  
  21.         return userName;  
  22.     }  
  23.       
  24.     /** 
  25.      * 服务器在接收到请求时验证token,并把刚才的Token设置为失效 
  26.      * @param token 
  27.      * @return 
  28.      */  
  29.     public boolean validateToken(String token){  
  30.         if(tokenStore.containsKey(token)){  
  31.             Date time= tokenStore.get(token);  
  32.             Date normal = new Date();  
  33.             if(normal.getTime() - time.getTime() > 100*1000){  
  34.                 //日志进退时  
  35.                 return false;  
  36.             }  
  37.             tokenStore.remove(token);  
  38.         }else{  
  39.             //日志,没有权限  
  40.             return false;  
  41.         }  
  42.         return true;  
  43.     }  

服务器端权限判断: 
Java代码   收藏代码
  1. public String hello() {   
  2.         //Hessian的服务之间怎么交互,比如我这个服务要用到其他的服务  
  3.             if(tokenGenerator.validateToken(token)){  
  4.                 return "hello "  + "欢迎学习Hessian";    
  5.             }else{  
  6.                 return "你没有权限访问!";  
  7.             }  
  8.               
  9.     }  


客户端调用: 
Java代码   收藏代码
  1. String token = tokenGenerator.generatorToken("ycl");  
  2.   
  3.             Hello hello = (Hello) context.getBean("helloServiceClient");  
  4.             //Spring2.5和hessian3.1果然可以结合.  
  5.               
  6.             hello.setToken(token);  
  7.             //添加Token参数  
  8.   
  9.             System.out.println(hello.hello());  

这里测试很简单,你可以设置一个Token,然后调用,可以得到正确的数据,如果没有设置Token则返回没有权限,如果等待一分钟调用,则返回服务超时[程序未加提示,自己编写]. 
这里的Token你可以试着调用两次试试,只有一次会成功.因为调用完一次后就已经失效了. 
这个代码还未进行优化,只是按照自己的构想实现了一把,嘿嘿
目录
相关文章
|
3月前
sa-token实现网关调用认证服务统一鉴权
sa-token实现网关调用认证服务统一鉴权
129 0
|
4月前
|
存储 缓存 NoSQL
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
|
10月前
|
存储 NoSQL 数据库
Oauth2协议中如何对accessToken进行校验
Oauth2协议中如何对accessToken进行校验
121 0
|
5月前
|
存储 安全 前端开发
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
这篇文章讨论了认证和授权的概念,并探讨了设计权限认证框架的原则。它还比较了Cookie和Session的区别,并探讨了处理分布式部署时的Session保存问题。此外,文章还介绍了CSRF攻击及其防范方法,以及OAuth2.0、JWT令牌和SSO的概念。最后,文章提出了设计开放授权平台时需要考虑的因素。
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
|
6月前
|
存储 Java 测试技术
03 Shrio身份认证示例
03 Shrio身份认证示例
20 0
|
7月前
|
存储 JSON 安全
JWT验证用户信息功能与OAuth2协议
JWT验证用户信息功能与OAuth2协议
72 0
|
9月前
|
存储 JSON 安全
Oauth2.0 + JWT 做权限认证
做过权限认证的朋友都清楚,SpringSecurity 的功能很强大,但是我们也都知道,它配置起来也着实让人头疼。N多个配置类还有N多个需要实现的接口,总是记不住和不知道为什么会有这么多,最近在学习这方面的东西,正好能够把学习到的东西分享出来给大家参考一下。
EMQ
|
9月前
|
JSON 安全 算法
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
本文将深入了解基于 Token 的认证和 OAuth 2.0,阐述它们的原理并展示它们在 MQTT 中的应用。
EMQ
250 0
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
|
11月前
|
存储 JSON NoSQL
手把手教大家在 gRPC 中使用 JWT 完成身份校验
手把手教大家在 gRPC 中使用 JWT 完成身份校验
|
JSON 前端开发 Java
Jwt认证方式多种
JWT全称是JSON Web Token, 官网地址[直达](https://jwt.io/);
122 0