JWTトークントークン

/ * 
使用JWT生成TOKEN、およびAPPトークンの生成と解析ログ
 * / 
パブリック クラスJwtTokenUtil {
     / ** 
     *トークンシークレットキー
     * / 
    パブリック 静的な 最終文字列SECRET = "1234567890" ;
     プライベート 静的な 最終文字列のキー= "user_codeを" ; 

    / ** 
     * JWTは、トークンを生成する。
     * JWTを構成する:ヘッダ、ペイロード、署名
     * @param 成功したログインユーザ後はuserNoない、パラメータが空で渡されないされない
      * / 
    @Validated 
    パブリック 静的文字列createToken(@NotBlank userNo文字列)スロー{例外
        iatDate DATE =新しい日付();
        // 時間の有効期限が切れる 
        nowTime =カレンダーCalendar.getInstance()を。
        nowTime.add(Calendar.DATE、 10 )。
        日expiresDate = nowTime.getTime(); 

        // ヘッダ地図 
        マップの<string、オブジェクト>マップ= 新しい HashMapの<> (); 
        map.put( "ALG"、 "HS256" )。
        map.put( "標準"、 "JWT" ); 

        // トークン構築
         // PARAMバックアップ{:サービス、AUD APP ISS} 
        文字列トークン= JWT.create()withHeader(マップ)。// ヘッダ
                .withClaim( "ISS"、 "サービス")// ペイロード 
                .withClaim( "AUD"、 "APP" 
                .withClaim(キー、userNo)
                .withIssuedAt(iatDateは)// 時間サイン 
                (expiresDate).withExpiresAtを// 時間を期限切れ 
                .sign(Algorithm.HMAC256(SECRET))。// 署名

        リターン・トークン。
    } 

    / ** 
     *解密トークン
     * @param トークン
     * @return 
     * @throwsの例外
      * / 
    プライベート 静的マップの<string、請求項> verifyToken(文字列トークン){ 
        DecodedJWT JWT = NULL ;
         試み{ 
            JWTVerifier検証 = JWT.require(Algorithm.HMAC256(SECRET))ビルド();. 
            JWT = verifier.verify(トークン); 
        } キャッチ( E例外){
             // e.printStackTrace();
             // トークンの検証が失敗し、不正な認証トークンがスローされた例外
            スロー 新しい新 BusinessException( "トークン検証失敗" ); 
        } 
        戻りjwt.getClaims(); 
    } 

    / ** 
     *トークンuser_no取得
     *@param トークン
     * @return user_No
      * / 
    パブリック 静的文字列getAppUID(文字列トークン){ 
        マップの<string、請求項>クレーム= verifyToken(トークン)。
        請求項user_id_claim = claims.get(キー)。
        もしヌル == user_id_claim || StringUtils.isBlank(user_id_claim.asString())){
             // トークン校验失败、抛出トークン验证非法异常
            スロー 新しい BusinessException( "异常トークン" ); 
        } 
        を返す)(user_id_claim.asString。
    } 
}

 

おすすめ

転載: www.cnblogs.com/jonney-wang/p/10930312.html