LoginSignup
0
1

More than 3 years have passed since last update.

MSAL(Microsoft Authentication Library)を使用したSSOにおけるアクセストークンの有効期限について

Last updated at Posted at 2021-01-25

背景

師いわく、MSALを使用してSSOを行うと、アクセストークンの有効期限が1時間だから
1時間毎に再認証が必要で、スマホ使っている人がアカウントを再選択する必要があるらしい。

ほんまか?
って思ったんですけど、ちゃんと調べた事は無かったので調査しました。

結論

1時間毎に再認証する必要はない。
ドキュメントから、デフォルト90日間連続して操作しなかった場合には再選択が必要になる。

ドキュメント調査

以下のリファレンスには期限切れが近いトークンを更新できると記載がある。
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/msal-acquire-cache-tokens#acquiring-tokens-silently-from-the-cache

また、期限切れが近いトークンを更新することもできます (トークン キャッシュには更新トークンも含まれるため)。

また、以下のページではトークンの有効期限が記載されている。
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/active-directory-configurable-token-lifetimes

デフォルト値は以下の通り
アクセストークン:1時間
更新トークン:90日間

イメージとしては ここ のブログに乗っている図がわかりやすい。(書いてあるのはADALの話だけど大きくは変わらないでしょう)

また、具体的な実装としては
acquireTokenSilentAsync(scope, authority, callback)
メソッドを呼び出すことで、アクセストークンをユーザに通知することなく取得する事ができる。
https://javadoc.io/doc/com.microsoft.identity.client/msal/2.0.2/com/microsoft/identity/client/ISingleAccountPublicClientApplication.html

Perform acquire token silent call.
If there is a valid access token in the cache, the sdk will return the access token;
If no valid access token exists, the sdk will try to find a refresh token and use the refresh token to get a new access token.
If refresh token does not exist or it fails the refresh, exception will be sent back via callback.

トークンのサイレントコールの取得を実行します。
キャッシュに有効なアクセストークンがある場合、SDKはアクセストークンを返します。
有効なアクセストークンが存在しない場合、SDKは更新トークンを見つけようとし、更新トークンを使用して新しいアクセストークンを取得します。
更新トークンが存在しないか、更新に失敗した場合、例外はコールバックを介して返送されます。

なので以下のような実装をすればトークンを自動的に更新できるはず。

ISingleAccountPublicClientApplication pca = ...; // 適当に取得する
IAccount mAccount = ... // サインインして取得
SilentAuthenticationCallback callback = ... // 適当にインターフェースを実装する
pca.acquireTokenSilentAsync({"user.read"}, mAccount.getAuthority(), callback);

結論として、1時間毎に再認証する必要はなく
デフォルトでは90日間ずっとアクセスしなかった場合に、スマホ利用者がADアカウントを再選択する必要がある。

0
1
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
0
1