1. 程式人生 > >Restful API 狀態管理:JWT

Restful API 狀態管理:JWT

Restful API

Restful講究一個無狀態的特性(stateless),這就不能把一些例如登陸後的認證資訊寫進cookie的傳統方式,目前探索的是採用token的方式來進行許可權的識別。

JWT

JWT 是JSON風格輕量級的授權和身份認證規範,可實現無狀態、分散式的Web應用授權;
jwt Token 是一串base64之後的程式碼 具體分為三部分:

Header      //jwt 加密演算法
Payload     // JWT 主要的資訊儲存部分,其中包含了許多種的宣告(claims) Claims 的實體一般包含使用者和一些元資料
Signature   // 用來驗證傳送者的 JWT 的同時也能確保在期間不被篡改

java 使用jwt

/**
     * 建立jwt
     * 
     * @param id
     * @param subject
     * @param ttlMillis
     * @return
     * @throws Exception
     */
    public String createJWT(String subject) throws Exception
    {
        Date now = new Date(System.currentTimeMillis());
        JwtBuilder builder = Jwts.builder().setHeaderParam("typ"
, "JWT").setIssuedAt(now).setSubject(subject) .signWith(SignatureAlgorithm.HS512, jwtPropertie.getKey()); if (jwtPropertie.getExpire() >= 0) { long expMillis = now.getTime() + jwtPropertie.getExpire(); Date exp = new Date(expMillis); builder.setExpiration(exp); } return
builder.compact(); } /** * 解密jwt_token * * @param jwt_token * @return * @throws Exception */ public Claims parseJWT(String jwt_token) throws Exception { Claims claims = Jwts.parser().setSigningKey(jwtPropertie.getKey()).parseClaimsJws(jwt_token).getBody(); return claims; }