Php 关于采埃孚Oauth的问题;官方";数据库模式
关于zf oauth(Apigility)和php oauth服务器数据库模式,我有几个问题 数据库架构为:Php 关于采埃孚Oauth的问题;官方";数据库模式,php,mysql,oauth-2.0,zend-framework2,laminas-api-tools,Php,Mysql,Oauth 2.0,Zend Framework2,Laminas Api Tools,关于zf oauth(Apigility)和php oauth服务器数据库模式,我有几个问题 数据库架构为: CREATE TABLE oauth_clients ( client_id VARCHAR(80) NOT NULL, client_secret VARCHAR(80) NOT NULL, redirect_uri VARCHAR(2000) NOT NULL, grant_types VARCHAR(80), scope VARCHAR(20
CREATE TABLE oauth_clients (
client_id VARCHAR(80) NOT NULL,
client_secret VARCHAR(80) NOT NULL,
redirect_uri VARCHAR(2000) NOT NULL,
grant_types VARCHAR(80),
scope VARCHAR(2000),
user_id VARCHAR(255),
CONSTRAINT clients_client_id_pk PRIMARY KEY (client_id)
);
CREATE TABLE oauth_access_tokens (
access_token VARCHAR(40) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VARCHAR(255),
expires TIMESTAMP NOT NULL,
scope VARCHAR(2000),
CONSTRAINT access_token_pk PRIMARY KEY (access_token)
);
CREATE TABLE oauth_authorization_codes (
authorization_code VARCHAR(40) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VARCHAR(255),
redirect_uri VARCHAR(2000),
expires TIMESTAMP NOT NULL,
scope VARCHAR(2000),
id_token VARCHAR(2000),
CONSTRAINT auth_code_pk PRIMARY KEY (authorization_code)
);
CREATE TABLE oauth_refresh_tokens (
refresh_token VARCHAR(40) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VARCHAR(255),
expires TIMESTAMP NOT NULL,
scope VARCHAR(2000),
CONSTRAINT refresh_token_pk PRIMARY KEY (refresh_token)
);
CREATE TABLE oauth_users (
username VARCHAR(255) NOT NULL,
password VARCHAR(2000),
first_name VARCHAR(255),
last_name VARCHAR(255),
CONSTRAINT username_pk PRIMARY KEY (username)
);
CREATE TABLE oauth_scopes (
type VARCHAR(255) NOT NULL DEFAULT "supported",
scope VARCHAR(2000),
client_id VARCHAR (80),
is_default SMALLINT DEFAULT NULL
);
CREATE TABLE oauth_jwt (
client_id VARCHAR(80) NOT NULL,
subject VARCHAR(80),
public_key VARCHAR(2000),
CONSTRAINT jwt_client_id_pk PRIMARY KEY (client_id)
);
您可以在以下网址找到:
因此,这个模式看起来真的很“标准”,因为Zend Technologies(Zend framework和apigility)采用了它,但我有一些问题:
我想使用
oauth_用户
表注册帐户,表单字段为“email”和“password”。我可以将电子邮件存储到oauth_users.username
字段中,但将此字段用作外键似乎不是一个好主意。最后,我的url在配置文件url/[:id]
中比配置文件url/[:username/]
中看起来更好。所以,我必须创建一个自定义主键,否则我可能会遇到问题oauth_users.username
作为我的其他表的外键,这似乎不是一个好主意正如您在composer json require列表中所看到的,ZF-Oauth2构建在其之上,您可以找到原始文档。它对OAuth2的工作有一些很好的解释。它也是@Adam所指的同一个存储库 您可以在一定程度上定制这些OAuth模块(比如使用您自己的表名)。为此,您可以使用自己的逻辑引入自定义的
OAuthAdapter
。还有其他模块可以完全做到这一点,例如,用于将OAuth2与条令2结合使用的模块
该图附带以下数据库关系图(来源:): 1)部分原因是通过一个查询支持主要数据库(这里是apigility解决此问题所使用的对包的合并请求)。例如,使用auto increment,您将失去PostgreSQL。