LINE WORKS の API を試そうと思ったのに、JWT 生成で悩んでしまったという時、この記事を読んでみてください。
取り急ぎ、Web サービスで JWT を生成して、トークンを発行する方法を説明します。運用環境での JWT 生成やトークン発行および管理については、様々な考慮が必要だと思いますので、とりあえずテスト目的での利用を想定した記事です。ご理解くださいませ。
この記事は LINE WORKS API 1.0 に沿った記載です。API 1.0 は 2023 年 4 月 30 日にリタイア予定です。API 2.0 に準じた記事を以下で掲載しています。
https://qiita.com/iwaohig/items/ba41a43a5fc46ba07051
サーバー API のトークン
LINE WORKS の API のうち、トーク Bot API などの実行にはサーバー API のトークンが必要です。
トークンの発行方法は 2 種類あるのですが、サーバー ID を用いたトークンの発行は、やや面倒です。
JWT (JSON Web Token) 生成ってなんじゃい、、みたいな。
JWT.IO という素敵なサービス
JWT.IO というサービスで、Web ページにパラメータをコピペすることで、サーバー トークン生成に必要な JWT を生成できます。
JWT.IO にアクセスします。
ページ下方にスクロールします。
Decoded の PAYLOAD と VERIFY SIGNATURE を書き換えていきます。
PAYLOAD
{
"iss":"46c4f281f81148c9b846c59262ae5888", <- サーバー ID
"iat":1492504672, <- JWT 生成日時
"exp":1492506472 <- JWT 満了日時
}
サーバー ID は Developer Console の "Server List(ID登録タイプ)" で生成された "ID" を用います。
JWT の生成日時と満了日時の間にトークンのリクエストを行う必要があります。UNIX 時間で記述します。最長 60 分有効となるよう指定できます。
UNIX 時間の変換はこのあたりの Web サイトを使いましょう。
VERIFY SIGNATURE
Developer Console の "Server List(ID登録タイプ)" で生成された "認証キー" をダウンロードします。
ダウンロードしたファイルの内容を -----BEGIN RSA PRIVATE KEY----- の方の入力欄に貼り付けます。
ここまでの作業を行うと、左側の Encoded の欄に、JWT が生成されています。
トークンの発行
生成された JWT を使って、LINE WORKS 認証サーバーへの Token リクエストを行います。
こちらのページの下方、[3. LINE WORKS 認証サーバーへの Token リクエスト - RFC-7523] の記載に沿って実行します。
https://developers.worksmobile.com/jp/document/13?lang=ja
正しくリクエストが実行されると Token の値を含むレスポンスが返ります。