android 中使用jwt token(json web token)--java
来源:互联网 发布:淘宝永久模板在哪里买 编辑:程序博客网 时间:2024/05/29 16:22
android 和 java 中使用jwt
首先说下为什么要写这篇博客,由于项目的需求,我发现在国类一般都不怎么去用,在baidu上搜了一大堆发现都没有相关的例子,就给大家贡献出来,希望以后有人需要用的时候在国内能看到,提供给需要用的人去用,如果需要转载,请表明转载处,谢谢。
其次说下 为什么要使用jwt,让网络数据更加安全,以防其他一些人无意恶搞
在这里简单说下:jwt是一个开源的java库,一个自包含的Java库,提供终端到终端的JSON网络令牌的创建和验证。
JWT的目标是成为最简单的库,用于创建和JVM上的验证JSON网络令牌(JWTs),
Java的JSON网络令牌 - 设计简单
该JSON网络令牌用于Java和Android库是非常简单的使用由于其基于建设者,流畅的界面,它隐藏大多数内部的复杂性。这是伟大的依赖IDE自动完成快速编写代码。
for example
javaimport io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import io.jsonwebtoken.impl.crypto.MacProvider;import java.security.Key;// We need a signing key, so we'll create one just for this example. Usually// the key would be read from your application configuration instead.Key key = MacProvider.generateKey();String jwtString = Jwts.builder().setSubject("Joe").signWith(SignatureAlgorithm.HS512, key).compact();
当谈到创建,解析和验证数字签名的紧凑JWTs(又名JWSs),所有的标准JWS算法支持开箱即用:
- HS256:HMAC使用SHA-256
- HS384:HMAC使用SHA-384
- HS512:HMAC使用SHA-512
- RS256:使用RSASSA-PKCS-v1_5中SHA-256
- RS384:使用RSASSA-PKCS-v1_5中SHA-384
- RS512:使用RSASSA-PKCS-v1_5中SHA-512
- PS256:RSASSA-PSS使用SHA-256和MGF1与SHA-256
- PS384:RSASSA-PSS使用SHA-384和MGF1与SHA-384
- PS512:RSASSA-PSS使用SHA-512和MGF1与SHA-512
- ES256:在使用P-256和SHA-256 ECDSA
- ES384:在使用P-384和SHA-384 ECDSA
- ES512:在使用P-512和SHA-512 ECDSA
在这里简单说下:一般使用256的,512是属于高级加密,可能国安局的用的比较多。
无需安装额外的加密库; 所有这些算法由JJWT提供。它甚至还提供了方便的密钥生成机制,所以你不必担心产生安全/安全密钥:
javaMacProvider.generateKey(); //or generateKey(SignatureAlgorithm)RsaProvider.generateKeyPair(); //or generateKeyPair(sizeInBits)EllipticCurveProvider.generateKeyPair(); //or generateKeyPair(SignatureAlgorithm)
下面贴上自己项目中的一个小小的exampleimport com.nimbusds.jose.JOSEException;import com.nimbusds.jose.JWSAlgorithm;import com.nimbusds.jose.JWSHeader;import com.nimbusds.jose.JWSObject;import com.nimbusds.jose.JWSSigner;import com.nimbusds.jose.Payload;import com.nimbusds.jose.crypto.MACSigner;import net.minidev.json.JSONObject;/** * Created by Fly0116 on 2016/4/9 0009. * json web token example */public class Example { static String DUOSHUO_SHORTNAME = "test"; static String DUOSHUO_SECRET = "3d990d2276917dfac04467df11fff26d"; public static void main(String [] args){ JSONObject userInfo = new JSONObject(); userInfo.put("short_name", DUOSHUO_SHORTNAME);//必须项 userInfo.put("user_key", "1");//必须项 userInfo.put("name", "网站用户A");//可选项 Payload payload = new Payload(userInfo); JWSHeader header = new JWSHeader(JWSAlgorithm.HS256); header.setContentType("jwt"); // Create JWS object JWSObject jwsObject = new JWSObject(header, payload); // Create HMAC signer JWSSigner signer = new MACSigner(DUOSHUO_SECRET.getBytes()); try { jwsObject.sign(signer); } catch (JOSEException e) { System.err.println("Couldn't sign JWS object: " + e.getMessage()); return; } // Serialise JWS object to compact format String token = jwsObject.serialize(); System.out.println("Serialised JWS object: " + token); //示例输出结果为eyJhbGciOiJIUzI1NiIsImN0eSI6Imp3dCJ9.eyJ1c2VyX2tleSI6IjEiLCJuYW1lIjoi572R56uZ55So5oi3QSIsInNob3J0X25hbWUiOiJ0ZXN0In0.NXKDXwXThzFkyfl_k_-p6mfM5cpOFppvfdIjrjEq14I }}此实例仅供参考
在这里附上git上的连接
https://github.com/jwtk/jjwt
http://dev.duoshuo.com/docs/501e6ce1cff715f71800000d
0 1
- android 中使用jwt token(json web token)--java
- JWT -- json web token
- JWT(JSON Web Token)
- JSON Web Token (JWT)
- jwt(json web token)
- JWT -- JSON WEB TOKEN
- Go实战--golang中使用JWT(JSON Web Token)
- JWT简介json web token bear token
- JSON Web Token (JWT) 简介
- 什么是 JWT -- JSON WEB TOKEN
- JWT(JSON WEB TOKEN)概要
- 什么是 JWT -- JSON WEB TOKEN
- 什么是 JWT -- JSON WEB TOKEN
- 什么是 JWT -- JSON WEB TOKEN
- 什么是 JWT -- JSON WEB TOKEN
- 什么是 JWT -- JSON WEB TOKEN
- JWT【JSON Web Token】 简述
- JWT【JSON Web Token】 简述
- 从C++到Qt
- iOS字符串操作
- map中 key,value 对换 ,互换
- leetcode 240. Search a 2D Matrix II
- Swiper使用
- android 中使用jwt token(json web token)--java
- 最大后验估计(MAP)与最大似然估计(MLE)
- bzoj 1116(构造+并查集)
- 1002 Problem B
- Android屏幕适配-资源文件夹命名与匹配规则
- 学学下拉刷新
- sql server 2008表基本操作
- PHP PDO ACCESS 留言板-回复留言replyMessage.php
- dp基础习题(4.11)