JWTにJdbcTokenStoreを使用する

zero01alpha

REST APIには、OAuth2認証にJWTを使用しています。現在JwtTokenStore、更新トークンをメモリに保存して、それらを取り消すことができるように拡張しています。

// TODO: This is a temporary in memory solution that needs to be replaced with a concrete persistent implementation.
public class MyJwtTokenStore extends JwtTokenStore {

    private List<OAuth2RefreshToken> refreshTokens;

    public MyJwtTokenStore(JwtAccessTokenConverter jwtTokenEnhancer) {
        super(jwtTokenEnhancer);
        refreshTokens = new ArrayList<>();
    }

    @Override
    public OAuth2RefreshToken readRefreshToken(String tokenValue) {
        OAuth2RefreshToken refreshToken = super.readRefreshToken(tokenValue);
        if (!refreshTokens.contains(refreshToken)) {
            throw new InvalidGrantException("Invalid refresh token: " + tokenValue);
        }
        return refreshToken;
    }

    @Override
    public void storeRefreshToken(OAuth2RefreshToken refreshToken, OAuth2Authentication authentication) {
        refreshTokens.add(refreshToken);
    }

    @Override
    public void removeRefreshToken(OAuth2RefreshToken token) {
        refreshTokens.remove(token);
    }
}

これらの更新トークンをメモリではなくデータベースに保存し始めたいと思います。Springはを提供しますJdbcTokenStoreが、そのクラスを拡張するJwtAccessTokenConverterと、コンストラクターにを設定できませんJWTを保存/取得する独自の方法を実装できることはわかっていますが、https://github.com/spring-projects/spring-security-でスキーマのすぐに使用できるサポートを利用したいと思います。 OAuthの/ブロブ/マスター/春-セキュリティのOAuth2 / SRC /テスト/リソース/ schema.sqlJdbcTokenStore提供します。

create table oauth_refresh_token (
  token_id VARCHAR(256),
  token LONGVARBINARY,
  authentication LONGVARBINARY
); 

SpringはJWTをデータソースに保存することをサポートしていますか?「JwtJdbcTokenStore」のようなものが必要です。これを実行しながら、事前定義されたクエリと操作を使用するための良い方法は何JdbcTokenStoreですか?

チッド

いいえ、Springはこれをサポートしていません。このスレッドを参照してくださいhttps://github.com/spring-projects/spring-security-oauth/issues/687

JWTトークンは自己完結型であるため、JWTトークンの永続化は関係ありません。知っておく必要のあることはすべて、そのトークンですでに利用可能です。

そうは言っても、それらを永続化する必要がある場合は、同じためのカスタムロジックを作成する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NodeAPIにJWTでSAMLを使用する

分類Dev

JWTを使用する役割

分類Dev

JWTにRS256を使用するのはいつですか?

分類Dev

CryptoJSで秘密鍵(pem)を使用してJWTに署名する方法は?

分類Dev

JWTを使用してAngular10にログインする

分類Dev

asp.net Core に JWT を使用する方法

分類Dev

jwtトークンを使用するときにユーザーを検出する方法(Slim-jwt-auth)

分類Dev

Identity + JWTを使用する.NETCore3.0が認証に失敗する

分類Dev

JWTとSpringを使用するとログインに失敗する

分類Dev

JWTでPawアプリを使用する

分類Dev

FlutterでWebSocketChannelでJWTを使用する方法

分類Dev

BallerinaでJWTを使用する方法

分類Dev

JWT を localStorage に保存する方法

分類Dev

axiosとjwtを使用してVueを適切に保護する方法は?

分類Dev

JWTを使用してAsp.net Web APIに認証を実装する

分類Dev

django Rest Frameworkjwtを使用してJWTトークン本体に情報を追加する

分類Dev

NestJS:JWTを使用してAuthGuardに検証オプションを追加する

分類Dev

Nuxt Auth Moduleを使用してVuexにJWTトークンを保存する方法は?

分類Dev

httponlycookieを使用してJWTをノードRESTAPIからVue.jsSPAに送信する

分類Dev

lexikを使用してJWT応答に公開データを追加する

分類Dev

JWTを理解する

分類Dev

JavaでPythonによって作成されたJWTトークンを使用する

分類Dev

Goを使用してJWTサブクレームにアクセスする方法

分類Dev

リクエストごとにJavaでJSON Web Token(JWT)を使用する方法

分類Dev

RSASHA-256ハッシュを使用してJWTに署名する方法

分類Dev

OWINとJWTを使用するときに認証失敗の理由をログに記録する方法は?

分類Dev

JWTにsha512を使用してRSAキーを生成するにはどうすればよいですか?

分類Dev

JWTに保存されているデータを表示するにはどうすればよいですか?auth0とexpress-jwtの使用

分類Dev

Express / Angularアプリを保護するためにexpress-jwtまたはpassport-jwtを使用する必要がありますか?

Related 関連記事

  1. 1

    NodeAPIにJWTでSAMLを使用する

  2. 2

    JWTを使用する役割

  3. 3

    JWTにRS256を使用するのはいつですか?

  4. 4

    CryptoJSで秘密鍵(pem)を使用してJWTに署名する方法は?

  5. 5

    JWTを使用してAngular10にログインする

  6. 6

    asp.net Core に JWT を使用する方法

  7. 7

    jwtトークンを使用するときにユーザーを検出する方法(Slim-jwt-auth)

  8. 8

    Identity + JWTを使用する.NETCore3.0が認証に失敗する

  9. 9

    JWTとSpringを使用するとログインに失敗する

  10. 10

    JWTでPawアプリを使用する

  11. 11

    FlutterでWebSocketChannelでJWTを使用する方法

  12. 12

    BallerinaでJWTを使用する方法

  13. 13

    JWT を localStorage に保存する方法

  14. 14

    axiosとjwtを使用してVueを適切に保護する方法は?

  15. 15

    JWTを使用してAsp.net Web APIに認証を実装する

  16. 16

    django Rest Frameworkjwtを使用してJWTトークン本体に情報を追加する

  17. 17

    NestJS:JWTを使用してAuthGuardに検証オプションを追加する

  18. 18

    Nuxt Auth Moduleを使用してVuexにJWTトークンを保存する方法は?

  19. 19

    httponlycookieを使用してJWTをノードRESTAPIからVue.jsSPAに送信する

  20. 20

    lexikを使用してJWT応答に公開データを追加する

  21. 21

    JWTを理解する

  22. 22

    JavaでPythonによって作成されたJWTトークンを使用する

  23. 23

    Goを使用してJWTサブクレームにアクセスする方法

  24. 24

    リクエストごとにJavaでJSON Web Token(JWT)を使用する方法

  25. 25

    RSASHA-256ハッシュを使用してJWTに署名する方法

  26. 26

    OWINとJWTを使用するときに認証失敗の理由をログに記録する方法は?

  27. 27

    JWTにsha512を使用してRSAキーを生成するにはどうすればよいですか?

  28. 28

    JWTに保存されているデータを表示するにはどうすればよいですか?auth0とexpress-jwtの使用

  29. 29

    Express / Angularアプリを保護するためにexpress-jwtまたはpassport-jwtを使用する必要がありますか?

ホットタグ

アーカイブ