2017-05-26 17 views
0

私はJWTトークンでSpring Oauth2セキュリティを実装しました。スプリングOauth JWT - リフレッシュトークン

私はJWT access_tokensを得ることができますが、refresh_tokenの使い方は完全にわかりません。私はrefresh_tokenを使って、新しいaccess_tokenと新しいrefresh_tokenを得ることができます。

新しいrefresh_tokenを再度使用したいときに、このトークンが無効であるというエラーが表示されます。

CREATE TABLE oauth_access_token (
    token_id varchar(510) NULL DEFAULT NULL::character varying, 
    token bytea NULL, 
    authentication_id varchar(510) NOT NULL, 
    user_name varchar(510) NULL DEFAULT NULL::character varying, 
    client_id varchar(510) NULL DEFAULT NULL::character varying, 
    authentication bytea NULL, 
    refresh_token varchar(510) NULL DEFAULT NULL::character varying, 
    CONSTRAINT oauth_access_token_pkey PRIMARY KEY (authentication_id) 
) 
WITH (
    OIDS=FALSE 
); 

私は制約oauth_access_token_pkeyを削除した場合、それは正常に動作しますが、その後の表では、N・トークンの行が含まれています。私は古いrefresh_tokenを使用している場合、私はこれがoauth_access_tokenテーブルのDDLで例外にDuplicateKeyException, PreparedStatementCallback; SQL [insert into oauth_access_token (token_id, token, authentication_id, user_name, client_id, authentication, refresh_token) values (?, ?, ?, ?, ?, ?, ?)]; ERROR: duplicate key value violates unique constraint "oauth_access_token_pkey"

を取得します1の代わりにIncorrectResultSizeDataAccessExceptionのために新しいトークンを発行することはできません。

更新トークンを作成するにはどうすればよいですか?

答えて

0

私はJdbcTokenStoreの代わりにJwtTokenStoreを使ってこの「問題」を解決しました。 JWTトークンはステートレスでなければなりませんが、データベースに格納していました。

関連する問題