因此,我使用 JWT 令牌实现了 Spring Oauth2 安全性。
我可以得到 JWT,access_tokens
但refresh_token
用法是我不完全理解的。我可以使用refresh_token
来获取 newaccess_token
和 new refresh_token
。
当我想refresh_token
再次使用新的时,我收到错误消息,指出此令牌无效。如果我使用旧的,refresh_token
那么我会得到例外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"
这是oauth_access_token
表的DDL :
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 个标记行,而不是 1,并且由于IncorrectResultSizeDataAccessException
.
我应该怎么做才能使刷新令牌工作?
我用 JwtTokenStore 而不是 JdbcTokenStore 解决了这个“问题”。JWT 令牌应该是无状态的,但我将它们存储在数据库中,这导致了问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句