JWTを生成/解析するときのsecret keyの生成方法

JWTについて調べてる。golangでちょっと使いたい用途があったので。

golang には JWT生成/解析するライブラリが結構あって、jwt-goってのが有名みたい。

github.com

func createTokenString(data *User, secretkey string) (string,error) {
    token := jwt.NewWithClaims(jwt.SigningMethodHS256, data)
    return token.SignedString([]byte(secretkey))
}

こんな感じでトークンが生成できるんだけど、secretkeyの部分に何を入れたらいいんだろう?ってなってた。

railsの例を見ると、configハッシュのsecret_key_baseキーに入っている値を渡してるみたい。 値はランダムな文字列のようだ。

blog.naoshihoshi.com

それはどうやって生成されてるかっていうと、rake secret みたいなコマンドを打つと生成できるようだ。でも、どういうアルゴリズムで生成されているかわからない。

とおもったら、以下に答えが。というかソースが。

til.hashrocket.com

んで、secure random golang とかで検索すると、まんまの答えがqiitaに上がってた。

qiita.com

ということで、これを使わせてもらって、めでたくセキュアにJWTのデータを生成・解析できるようになりました。

めでたし、めでたし。