まず第一にすべての私の悪い英語。ステートレス.NET JWTベースのoauth2認証サーバー
私はoauth2でnewbyです。JWTトークンを使用して認証サーバーをセットアップしようとしています。
サーバーはOwinの自己ホスト環境で動作しています。
トークン生成をセットアップしたところ、正しく動作しているように見えました。リフレッシュトークンプロバイダもセットアップされていますが、動作するようです(ただし最小限の実装です)。私はOAuthAuthorizationServerOptionsのRefreshTokenFormatをデフォルトにしたまま変更しなかった(私は何がデフォルトのフォーマットなのかわからない)ので、アクセストークンは明らかにJWTトークンであり、リフレッシュトークンは他のものである。
これはすべて正常に動作しているようですが、マイクロサービス環境でこの認可サーバーを実行する必要があるため、認可サーバーサービスはあるマシンから別のマシンにいつでも移動できるため、ステートレスまたは共有されたストレージ(DB)または複製されたローカルストレージ(私はService Fabric上にある)または何らかの種類の分散キャッシュに必要な情報を保存することができます。
テストマシン上でリフレッシュトークンを生成した後、このリフレッシュトークンを(別のマシン上の)認証サーバーの別のインスタンスで使用して新しいアクセストークンを取得しようとすると、失敗します一般的なinvalid_grantエラーが発生します。私の推測では、認証サーバはトークン関連の情報をメモリに保持しているだけですが、どういうことか分かりません。
この問題を解決するには、誰かが私に正しい方向を向けるようにしたいと思います。
ありがとうございました。