RefreshTokenの有効期限について

N運用担当者

2022.12.15既読 5478

Service Account認証 (JWT)のドキュメントを確認し、
JWT生成日時: 2022-12-15 11:00:00
JWT満了日時: 2022-12-15 12:00:00
で、JWTのファイルを作成し、
①2022/12/15 11:30に、AccessTokenを作成しました。その際、RefreshTokenも取得できました。
この①のAccessTokenの有効期限は、24時間とのことですので、
2022/12/16 11:30
です。
毎日の処理があります。
2022/12/15 12:00に実行するAPIは、①のAccessTokenを使用してアクセス成功します。
翌日(2022/12/16 12:00)の処理では、①のAccessTokenは有効期限切れですので、
①RefreshTokenを使用して、②AccessTokenを再発行し、②のAccessTokenを使用してAPI処理成功します。
ドキュメントでは、RefreshTokenの有効期限は90日とあります。
上記の毎日処理(①のRefreshTokenから、AccessTokenを再発行し、再発行されたAccessTokenでAPI処理)を繰り返すことは可能なのでしょうか?
①のRefreshTokenの有効期限は、2022/12/15 + 90日なので、90日後には、JWTファイルを作成するところからやり直さなければならないのでしょうか?
それとも、①のRefreshTokenの有効期限は、AccessTokenを再発行する度に、そこから+90日に延長されるのでしょうか?
以上 よろしくお願いします。

コメント10

  • 업데이트 된 답글입니다.

    AccessTokenの有効期限が24時間でRefreshTokenが90日で、RefreshTokenはAccessTokenを取得するときに一緒にResponseされますよね。

    AccessTokenを取得してから24時間経過すると、AccessTokenは期限が切れるので、【AccessTokenを再取得しないのであれば】RefreshTokenの期限が切れるまではRefreshTokenを使用してAPIを実行できる。

    RefreshTokenの期限が切れたら、AccessTokenの取得を実行しないといけなくて、その時に【新しいRefreshTokenを取得できる。】だと思うので、
    要はAccessTokenを再取得するとRefreshTokenが延長されるわけではなく、RefreshTokenも再取得することになると思います。

    AccessTokenを何度か取得してResponse内容を確認していますが、RefreshTokenの値も都度更新されているように思います。

    2022.12.15

    0
  • 업데이트 된 답글입니다.

    N運用担当者 投稿者

    >AccessTokenの有効期限が24時間でRefreshTokenが90日で、RefreshTokenはAccessTokenを取得するときに一緒にResponseされますよね
    →はい。

    >AccessTokenを取得してから24時間経過すると、AccessTokenは期限が切れるので、【AccessTokenを再取得しないのであれば】RefreshTokenの期限が切れるまではRefreshTokenを使用してAPIを実行できる
    →ここの認識が違っているのですが、ドキュメントのAPICallには、
    「APIを呼び出す際は、HTTP Headerに以下の形式でAccess Tokenを指定する必要があります。」
    とあり、RefreshTokenではAPIは実行できない認識です。
    AccessTokenが、24時間で期限切れした後は、ドキュメントのUser Account認証 (OAuth) のAccessToken再発行 にあるように、
    「RefreshToken をRequestのパラメータとして、AccessToken再発行を実施して、レスポンスとしてAccessTokenを受け取る。この時レスポンスに、RefreshTokenはありません。
    この再発行されたAccessTokenを使用してAPIを呼び出す」と認識していますが、違いますでしょうか?

    2022.12.15

    0
  • 업데이트 된 답글입니다.

    あ、すみません。仰る通りですね!!
    RefreshToken自体でAPIを実行するわけではないですね!
    ありがとうございます。

    いずれにしてもRefreshTokenの有効期限が切れてしまったら、再度JWTの生成からAccessTokenを取得して、新しいRefreshTokenを取得する(延長ではない)ですね。

    2022.12.15

    0
  • 업데이트 된 답글입니다.

    N運用担当者 投稿者

    回答ありがとうございます。

    >いずれにしてもRefreshTokenの有効期限が切れてしまったら、再度JWTの生成からAccessTokenを取得して、新しいRefreshTokenを取得する(延長ではない)ですね
    →最長で90日に一度は、「JWTファイル生成しなおして、AccessTokenを取得する」ということをみなさん実施されているのでしょうか?
    最初にAccessTokenを取得したら、毎日のバッチ処理では「RefreshTokenからのAccessToken再発行処理」を毎日実施して、API処理を完結させたいと考えていました。「JWTファイル生成」という手作業をなくしたいと考えていますが、みなさんどのようにされているのでしょうか?

    2022.12.15

    0
  • 업데이트 된 답글입니다.

    >→最長で90日に一度は、「JWTファイル生成しなおして、AccessTokenを取得する」

    ドキュメントを見る限り、これはせざるを得ないですよね。

    私はアプリ開発の専門的な知識がある訳ではなくて、本当に小規模のチームでネットで検索した知識を十分に理解しないままにコピペで活用してちょっとしたBotを動かしている程度です。
    良く参考にしているのは以下のような情報ですね。。。

    https://qiita.com/kunihiros/items/4cdec5784f21598cfee0
    https://qiita.com/tnk-tty/items/4b8cafd64002561127ff

    本当に小規模で運用しているので、Bot実行時に毎回AccessTokenを取得するような感じで動いてると思うのですが、、、
    N運用担当者さんのレベルには程遠いと思いますし、あまり参考になるようなことが言えなくて申し訳ございません。

    2022.12.15

    0
  • 업데이트 된 답글입니다.

    nononosuque

    >最長で90日に一度は、「JWTファイル生成しなおして、AccessTokenを取得する」ということをみなさん実施されているのでしょうか?

    あまり参考にならないかもです。
    私の場合、リフレッシュトークンは利用していないです。
    毎回アクセストークン取得しています(=都度JWTファイル生成とアクセストークン取得を行っています。)

    フローにリフレッシュトークンの利用を組み込む場合、
    アクセストークン取得までのパターンが以下の2つに分かれます。
    ①JWTファイル生成してアクセストークン取得
    ②リフレッシュトークンを利用してアクセストークン取得

    2パターンある=発行までのフローに条件付けて組み込む必要があるので、
    逆に制御などが面倒かもということで、
    アクセストークン取得にあたり、発行までのフローで条件付けが不要な①で回しています。

    2022.12.16

    0
  • 업데이트 된 답글입니다.

    N運用担当者 投稿者

    回答、ありがとうございます。

    ユーザーアカウントのメンテナンス処理など、毎朝実行される処理があり、その処理実行前に、AccessTokenを使用できる状態にしておく必要があります。
    RefreshTokenからAccessTokenを取得する処理は処理中に組み込めるのですが、
    「JWTファイル生成」を処理可することができず、手作業で作成している為、②を選択することになるかと考えています。

    普段は、②を組み込んだアカウントメンテナンス処理を毎朝実行し、
    たまに(最長90日)、①を実施する必要がある。
    かなと。

    >アクセストークン取得にあたり、発行までのフローで条件付けが不要な①で回しています。
    ちなみに、「JWTファイル生成」も「処理可」することができているのでしょうか?それとも私のように、手作業でしょうか?

    以上 よろしくお願いします。

    2022.12.16

    0
  • 업데이트 된 답글입니다.

    nononosuque

    >ちなみに、「JWTファイル生成」も「処理可」することができているのでしょうか?それとも私のように、手作業でしょうか?
    ⇒私も「JWTファイル生成」と記載してしまったのですが、
     LWのドキュメントに記載の「JWTの生成」の意味合いの理解であっておりますでしょうか。
     https://developers.worksmobile.com/jp/reference/authorization-sa?lang=ja
     その前提であれば、「JWTの生成」は処理化(プログラムの処理に組み込むこと)することは可能な認識です。

     私の場合は、
     JWT生成からアクセストークン取得+利用APIの実行までワンクリックで実行できるようにしています。
     WindowsのタスクスケジューラーやRPA等にexeの実行を組み込むことはやっていませんが、
     エラー時のチェック/通知/再実行の問題もあるかと思いますが、組み込むことで自動化させることも可能だと思います。
     
     


    2022.12.16

    0
  • 업데이트 된 답글입니다.

    N運用担当者 投稿者

    回答ありがとうございます。
    「JWTの生成」の意味合い は、認識同じです。

    ただ、私に技術力がなく、前任者が残したマニュアルに沿って、
    サイト「https://jwt.io/」にアクセスして、手作業で必要項目入力して、JWTファイルに必要なassertionの値を作って、JWTファイルを生成しています。
    ここが手作業なので、①に一本化できない状況です。



    2022.12.16

    0
  • 업데이트 된 답글입니다.

    nononosuque

    状況理解しました。

    サイト「https://jwt.io/」を利用したことがないので出来るとは言えないのですが、
    何らかRPAツールをご利用されているようであれば、
    https://jwt.io/」を利用したJWTの生成をRPAに実施させることで、処理化することは可能かもしれません。

    2022.12.19

    0
前の投稿 AccessTokenの再発行について
次の投稿プラン別のScopeについて
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。