关于OAuth2的数据库设计(spring-security-oauth2)
大家好,我正在尝试模仿spring-security-oauth2的数据库结构创造一个我自己的OAuth2数据库,但在理解时遇到了一些问题。
Q1: “oauth_client_details”表中的“authorities”字段有何意义,是否可以省略
Q2: “oauth_client_token”表中的“token_id”和“authentication_id”字段有何意义,是否可以用数据库的自增ID代替;为什么需要“user_name”字段,我认为这是不必要的
Q3: “oauth_access_token”表、“oauth_refresh_token”表、“oauth_code”表中的“authentication”字段有何意义,是否可以省略
然后是一些关于OAuth2协议的问题。
Q4: 使用refresh_token后,服务器下发了新的access_token,同时是否应该再下发新的refresh_token?
如果有更好、便于理解的OAuth2数据库结构,也欢迎推荐。
为我较低的技术水平(我并不是一位Java开发者)抱歉,非常感谢您耐心阅读和回答。
-- used in tests that use HSQL
create table oauth_client_details (
client_id VARCHAR(256) PRIMARY KEY,
resource_ids VARCHAR(256),
client_secret VARCHAR(256),
scope VARCHAR(256),
authorized_grant_types VARCHAR(256),
web_server_redirect_uri VARCHAR(256),
authorities VARCHAR(256),
access_token_validity INTEGER,
refresh_token_validity INTEGER,
additional_information VARCHAR(4096),
autoapprove VARCHAR(256)
);
create table oauth_client_token (
token_id VARCHAR(256),
token LONGVARBINARY,
authentication_id VARCHAR(256) PRIMARY KEY,
user_name VARCHAR(256),
client_id VARCHAR(256)
);
create table oauth_access_token (
token_id VARCHAR(256),
token LONGVARBINARY,
authentication_id VARCHAR(256) PRIMARY KEY,
user_name VARCHAR(256),
client_id VARCHAR(256),
authentication LONGVARBINARY,
refresh_token VARCHAR(256)
);
create table oauth_refresh_token (
token_id VARCHAR(256),
token LONGVARBINARY,
authentication LONGVARBINARY
);
create table oauth_code (
code VARCHAR(256),
authentication LONGVARBINARY
);
create table oauth_approvals (
userId VARCHAR(256),
clientId VARCHAR(256),
scope VARCHAR(256),
status VARCHAR(10),
expiresAt TIMESTAMP,
lastModifiedAt TIMESTAMP
);
-- customized oauth_client_details table
create table ClientDetails (
appId VARCHAR(256) PRIMARY KEY,
resourceIds VARCHAR(256),
appSecret VARCHAR(256),
scope VARCHAR(256),
grantTypes VARCHAR(256),
redirectUrl VARCHAR(256),
authorities VARCHAR(256),
access_token_validity INTEGER,
refresh_token_validity INTEGER,
additionalInformation VARCHAR(4096),
autoApproveScopes VARCHAR(256)
);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论