前提・実現したいこと
opensslを使用しラインワークスのJWT 生成を行いたい。
参考URL
https://developers.worksmobile.com/jp/document/1002002?lang=ja
コマンドラインにより
jwtの生成ができないものかと試行錯誤していますが
最後のsignatureの作成ができない状態です。
Server List(ID 登録タイプ)でダウンロードした認証キーは
openssl rsa -in pri.key -out pri.key.out
と変換しております。
作成方法
header=echo -n '{"alg":"RS256","typ":"JWT"}' | base64 | sed -E s/=+$//
echo $header
payload=echo -n '{"iss":"ae067176de5042c58ba36a2fa6c25325","iat":1566601200,"exp":1566687600}' | base64 | sed -E s/=+$//
echo $payload
signature=echo -n $header.$payload | openssl dgst -sha256 -sign pri.key.out -binary | base64 | sed -E s/=+$//
echo $signature
echo $header.$payload.$signature
その後、+を-に置換、/を_に置換をした文字列を利用しています。
発生している問題・エラーメッセージ
上記方法で作成したJWTを利用したトークン発行をしたのですが
帰ってくるメッセージは下記のように無効な署名となります。
{"message":"jwt invalid signature","detail":"JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.","code":"30"}
該当のソースコード
header=echo -n '{"alg":"RS256","typ":"JWT"}' | base64 | sed -E s/=+$//
echo $header
payload=echo -n '{"iss":"ae067176de5042c58ba36a2fa6c25326","iat":1566601200,"exp":1566687600}' | base64 | sed -E s/=+$//
echo $payload
signature=echo -n $header.$payload | openssl dgst -sha256 -sign pri.key.out -binary | base64 | sed -E s/=+$//
echo $signature
コマンドラインにて操作
試したこと
・ダウンロードした認証キーをそのまま利用した方法。
・ダウンロードした認証キーを変換して利用した方法。
補足情報(FW/ツールのバージョンなど)
openssl dgst -sha256 -sign pri.key.out -binary のコマンドの使い方が違うのではと思っています。
あなたの回答
tips
プレビュー