WebApp としてホストされている Azure に Thinktecture の Identity Server v3 のインスタンスがあります。一般に、期待どおりに動作しますが、 refresh_token 権限付与タイプでトークンID/接続/トークンエンドポイントを介してリフレッシュ トークンを使用しようとすると、いくつか問題が発生します。認証コード フローを使用するクライアントがあり、これはこのクライアントに関するリフレッシュ トークン オプションに関連する設定です。
// refresh token options
AccessTokenType = AccessTokenType.Jwt,
AccessTokenLifetime = 3600,
RefreshTokenUsage = TokenUsage.OneTimeOnly, // Every time generates new refresh token. Not only access token.
RefreshTokenExpiration = TokenExpiration.Sliding,
SlidingRefreshTokenLifetime = 1296000
これを扱ったことのある人にとっては、私がJWTトークンを使用していることは明らかであり、アクセストークンは1時間有効であり、その後はIdentity Serverに再度ログインする必要なく、リフレッシュトークンを使用して新しいアクセストークンとリフレッシュトークンを取得できます. 私の更新トークンは 15 日間 (1296000 秒) 有効でなければなりません。実際に起こることは、期待どおりに機能しないということです。なんらかの理由で、前の API から 1 時間半後に REST API (アイデンティティ サーバーの証明書利用者) を呼び出すことにすると、invalid_grant応答が返されます。
少しテストすることにし、アクセス トークンを 2 分で期限切れにし、リフレッシュ トークンを 10 分で期限切れにしました。それから、アクセス トークンの期限が切れてから 1、2、3 分後に呼び出しを試みました。期待どおりに動作していました。私は 1 時間のアクセス トークンでこの種のテストを行いたくないので、誰かが以前にそれを経験したことがあるかどうかをここで尋ねることにしました。