将 IBM DB2 用于持久 OAuth 服务
可以将 IBM® DB2® 用于持久 OAuth 服务。为了方便起见和供您参考,本主题说明了为 OAuth 持久服务配置 DB2 时需要执行的步骤。
完成以下步骤:
- 创建数据库和表。编辑并运行以下 SQL 语句以创建 OAuth 数据库和表:
缺省 DB2 侦听端口为 50000。如果您想要查找此端口,请运行以下命令并查找 SVCENAME 参数的值。如果它是一个数字,那么它是端口号。如果它是一个名称,请在 /etc/services 文件或者 Windows 等价文件(您正在使用 Windows)中查找此名称。-- Change oauth2db to the name you want for the database CREATE DATABASE oauth2db USING CODESET UTF8 TERRITORY US; CONNECT TO oauth2db; ----- CREATE TABLES ----- CREATE TABLE OAuthDBSchema.OAUTH20CACHE ( LOOKUPKEY VARCHAR(256) NOT NULL, UNIQUEID VARCHAR(128) NOT NULL, COMPONENTID VARCHAR(256) NOT NULL, TYPE VARCHAR(64) NOT NULL, SUBTYPE VARCHAR(64), CREATEDAT BIGINT, LIFETIME INT, EXPIRES BIGINT, TOKENSTRING VARCHAR(2048) NOT NULL, CLIENTID VARCHAR(64) NOT NULL, USERNAME VARCHAR(64) NOT NULL, SCOPE VARCHAR(512) NOT NULL, REDIRECTURI VARCHAR(2048), STATEID VARCHAR(64) NOT NULL ); CREATE TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG ( COMPONENTID VARCHAR(256) NOT NULL, CLIENTID VARCHAR(256) NOT NULL, CLIENTSECRET VARCHAR(256), DISPLAYNAME VARCHAR(256) NOT NULL, REDIRECTURI VARCHAR(2048), ENABLED INT ); ----- ADD CONSTRAINTS ----- ALTER TABLE OAuthDBSchema.OAUTH20CACHE ADD CONSTRAINT PK_LOOKUPKEY PRIMARY KEY (LOOKUPKEY); ALTER TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG ADD CONSTRAINT PK_COMPIDCLIENTID PRIMARY KEY (COMPONENTID,CLIENTID); ----- CREATE INDEXES ----- CREATE INDEX OAUTH20CACHE_EXPIRES ON OAUTHDBSCHEMA.OAUTH20CACHE (EXPIRES ASC); ----- GRANT PRIVILIGES ----- ----- UNCOMMENT THE FOLLOWING IF YOU USE ANOTHER ACCOUNT OTHER THAN ADMINISTRATOR FOR DB ACCESS ----- -- Change dbuser to the account you want to use to access your database -- GRANT ALL ON OAuthDBSchema.OAUTH20CACHE TO USER dbuser; -- GRANT ALL ON OAuthDBSchema.OAUTH20CLIENTCONFIG TO USER dbuser; ----- END OF GRANT PRIVILIGES ----- DISCONNECT CURRENT;
可以在 DB2 中通过运行以下语句来创建数据库和表:Linux/Unix: db2 get dbm cfg | grep SVCENAME Windows: db2 get dbm cfg | findstr SVCENAME
db2 -tvf createTables.sql
- 配置数据源。
在管理控制台中,转至
。- 选取范围。本主题中使用 server。
- 单击 。将启动一个向导。
- 选择下列参数:
- 数据库类型:DB2
- 提供程序类型:DB2 通用 JDBC 驱动程序提供程序
- 实现类型:连接池数据源
- 单击 。
- 设置下列参数:
- DB2_UNIVERSAL_JDBC_DRIVER_PATH:/home/ldapdb2/sqllib/java
- DB2_UNIVERSAL_JDBC_DRIVER_NATIVEPATH:/home/ldapdb2/sqllib/lib
- 单击 。
- 单击 。
- 保存配置。
- 转至 。
- 单击 。
- 设置下列参数:
- 别名:oauthalias
- 用户标识:dbuser
避免故障: dbuser 用户是您最初创建的操作系统用户。gotcha
- 密码:<dbuser 的密码>
- 单击 。
- 保存配置。
- 转至 。
- 选取范围。本主题中使用 server。
- 单击 。将启动一个向导。
- 设置下列参数:
- 数据源名称:OAuth JDBC 服务
- JNDI 名称:jdbc/oauthProvider
- 组件管理的认证别名:<scope>/oauthalias
- 单击 。
- 选择现有 JDBC 提供程序,它应为 DB2 通用 JDBC 驱动程序提供程序。
- 单击 。
- 设置下列参数:
- 数据库名称:oauth2db
- 驱动程序类型:4
- 服务器名称:<DB2 服务器>
- 端口号:<请参阅先前有关 SVCENAME 参数的信息>
- 容器管理的持久性:已选中
- 单击 。
- 单击 。
- 保存配置。
INSERT INTO OAuthDBSchema.OAUTH20CLIENTCONFIG
(
COMPONENTID,
CLIENTID,
CLIENTSECRET,
DISPLAYNAME,
REDIRECTURI,
ENABLED
)
VALUES
(
'1',
'key',
'secret',
'My Client',
'https://localhost:9443/oauth/redirect.jsp',
1
)