JavaでJWTを使えないか検討する #240
JavaでJWT
JWT、Json Web Tokenの略。電子的に署名することで改ざんができないJSONみたいなものをイメージするといいようです。詳しくはまだ理解できていないので適当にググってください、またはこちらの記事がわかりやすいです。
これを今作っている学校のサービスのAPIの認証に用いることができないかなぁと画策してました。
JavaでAPIサーバーを作っているので、Javaで使えることが大前提。結論から言うと、複数のJavaで使用できるJWTのライブラリが存在するので特に問題はなさそうでした。
ここに載っているだけでも6個のライブラリがあるようです。
とりあえずどれがいいかもよくわからなかったので、↑のサイトを作っているAuth0が作ったライブラリのREADMEにあるコードを動かしてみました。
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.impl.crypto.MacProvider; import java.security.Key; public class Main { public static void main(String[] args) { Key key = MacProvider.generateKey(); String jws = Jwts.builder() .setSubject("Joe") .signWith(SignatureAlgorithm.HS512, key) .compact(); System.out.println(jws); } }
こんな感じ。これを実行すると`eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJKb2UifQ.3bfRlJ97GWXpQyz_npkN6n-Kiwj8w-fo2AuemYL_yeoycMC5eEenwXlM4oCSXRcn2VqXhTruGKdPzxg2QTNGww
みたいなトークンが吐き出されるのでjwt.ioに貼ってみました。
ちゃんとデコードできてるっぽい。
そして、個人的な朗報としては、このライブラリはJava7環境下でも動くっぽいです。これ大事。(本番がJava7)
とりあえずライブラリと密結合しないように気をつけながらAPIに組み込んでみようかと思います。
雑談
1週間はやくね?もう明日金曜と聞いて震えた。
でんぱ組、全国ツアーの東京公演のチケットに当選した。
神。出費が…。