6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LINE WORKS のトークン取得時に必要な JWT をサクっと生成してみた (LINE WORKS API 2.0)

Last updated at Posted at 2022-07-01

LINE WORKS の API を試そうと思ったのに、JWT 生成で悩んでしまったという時、この記事を読んでみてください。

取り急ぎ、Web サービスで JWT を生成して、トークンを発行する方法を説明します。運用環境での JWT 生成やトークン発行および管理については、様々な考慮が必要だと思いますので、とりあえずテスト目的での利用を想定した記事です。ご理解くださいませ。

なお、以下の旧 API 対応記事の API 2.0 対応版です。
https://qiita.com/iwaohig/items/5add44b10768eeb7ad6a

Service Accontu 認証 (JWT)

LINE WORKS API 2.0 は、User Account 認証と Service Account 認証が使えます。
Service Account 認証は、旧 API のサーバー API 利用と同様のシナリオで利用しやすい認証方式です。

Service Account 認証では JSON Web Token を利用してアクセス トークンを発行します。ちょっと面倒くさい。

JWT (JSON Web Token) 生成ってなんじゃい、、みたいな。

LINE WORKS Developers サイトのリファレンス ページ
TITLE: Service Account認証 (JWT)
URL: https://developers.worksmobile.com/jp/reference/authorization-sa?lang=ja

JWT.IO

JWT.IO というサービスで、Web ページにパラメータをコピペすることで、アクセス トークン生成に必要な JWT を生成できます。

JWT.IO にアクセスします。

https://jwt.io/
image.png

ページ下方にスクロールします。

ALGORITHM のプルダウンで "RS256" を選択
image.png

Decoded の PAYLOAD と VERIFY SIGNATURE を書き換えていきます。

PAYLOAD

{
  "iss":<Clinet ID>,
  "sub":"<Service Account>",
  "iat":<JWT 生成日時 (UNIX TIME)>,
  "exp":<JWT 満了日時 (UNIX TIME)>
}

image.png

Client ID と Service Account は、LINE WORKS Developer Console のアプリの設定内容をコピーします。

l_1517737_2043_b0fe70fccc1f5895f11cfb71158ccff8.png

JWT の生成日時と満了日時の間にトークンのリクエストを行う必要があります。UNIX 時間で記述します。最長 60 分有効となるよう指定できます。

UNIX 時間の変換はこのあたりの Web サイトを使いましょう。

VERIFY SIGNATURE

LINE WORKS Developer Console のアプリの "Private Key" で [発行/再発行] ボタンをクリックして "Private Key" をダウンロードします。
image.png

ダウンロードしたファイルの内容を -----BEGIN RSA PRIVATE KEY----- の方の入力欄に貼り付けます。
image.png

ここまでの作業を行うと、左側の Encoded の欄に、JWT が生成されています。
image.png

トークンの発行

生成された JWT を使って、アクセス トークン リクエストを行います。

こちらのページの下方、[Access Token の発行] の記載に沿って実行します。
https://developers.worksmobile.com/jp/reference/authorization-sa?lang=ja

Curl での実行例です。

curl -d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&client_id=<Clinent ID>&client_secret=<Client secret>&scope=<scope>&assertion=<JWT>" -H "Content-Type: application/x-www-form-urlencoded" -X POST https://auth.worksmobile.com/oauth2/v2.0/token

正しくリクエストが実行されると Token の値を含むレスポンスが返ります。

2022-07-01 (2).png

{"access_token":"jp1AAABElAYo/M8P8YV2K+1CBM/NWlxCdYp3A6Bik7Q/yMfAjunHdSV++yS9Wm7hsxQ0Hd3ZN54Iiii3CCcOSYowL/xA42RRq9vCVviGqYQLTXk/WhJbTcH7IwN+RZQCEIuL7Np1YuPuBoh5anYzkSp7u+44aXOaWLU+VlzLpWAe6QLyoNz2Y6vkh2r4i3Yp/tLOZQJLcMimY3/cxt1QbTwgvTshz79kmgPpK4T1u4Waqa6dPVguMSWRBPLDhwwVXTgC/wfstMDtL+uQKoj8rkREbgCe64W5Ietne0xxOe3QWSHJ4z6L5U/6IzC9kFCh+1UrbxqNYguB2OCD9eUpE5fJs10WewXXOzYQ1D+c4MkPvbVwFmJzxf5W7v0GJtNcr11N/reCg==","refresh_token":"jp1AAAAhG8me63qGjzC0rgG3sVIOCIEgxyMrFblr91eTL0+tYuXYHXJMpEO9c9MBh2E3c0rFqZ05iPUzQ5u0tEjD4hJaoBHa2FZ4gizh1EjfRoaI1kMCNYjIOeOB1nVa7TWDQFJyBRdacGJHBavniO35BDu2hbjBktlnRsNp+ZWq8u/FkffXHRtocf7jaoCZgMiHL/4vA==","scope":"bot","token_type":"Bearer","expires_in":"86400"}
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?