用於持續性 OAuth 服務的 IBM Db2
持續性 OAuth 服務可以使用 IBM® DB2®。 為了方便與參考之目的,這個主題記載了配置 DB2 來用於 OAuth 持續性服務所需要的步驟。
如果要配置 DB2 用於持續性 OAuth 服務,請完成下列步驟:
- 建立一個資料庫及若干表格。
編輯及執行下列 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, EXTENDEDFIELDS CLOB 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, CLIENTMETADATA CLOB NOT NULL ); CREATE TABLE OAuthDBSchema.OAUTH20CONSENTCACHE ( CLIENTID VARCHAR(256) NOT NULL, USERID VARCHAR(256), PROVIDERID VARCHAR(256) NOT NULL, SCOPE VARCHAR(1024) NOT NULL, EXPIRES BIGINT, EXTENDEDFIELDS CLOB NOT NULL DEFAULT '{}' ); ---- 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 PRIVILEGES ---- ---- UNCOMMENT THE FOLLOWING IF YOU USE AN 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
- 配置 Liberty 伺服器。下列範例是使用 DB2 儲存庫之 OAuth 提供者的 server.xml 檔範例:
<server> <featureManager> <feature>oauth-2.0</feature> <feature>ssl-1.0</feature> <feature>jdbc-4.0</feature> <feature>jndi-1.0</feature> </featureManager> <keyStore password="keyspass" /> <oauth-roles> <authenticated> <user>testuser</user> </authenticated> </oauth-roles> <oauthProvider id="DBOAuth20Provider" oauthOnly="true" filter="request-url%=AnnuityOAuthWeb/index.jsp"> <databaseStore dataSourceRef="OAUTH2DBDS" /> </oauthProvider> <jdbcDriver id="db2Universal" libraryRef="DB2JCC4LIB" /> <library apiTypeVisibility="spec,ibm-api,third-party" filesetRef="db2jcc4" id="DB2JCC4LIB" /> <fileset dir="${shared.resource.dir}/db2" id="db2jcc4" includes="db2jcc4.jar db2jcc_license_cu.jar" /> <dataStore id="OAUTH2DBDS" jdbcDriverRef="db2Universal" jndiName="jdbc/oauthProvider"> <properties.db2.jcc databaseName="OAUTH2DB" driverType="4" user="bob" password="abcdefg=" portNumber="50000" serverName="db2.server.mycompany.com" /> </dataStore> <webAppSecurity allowFailOverToBasicAuth="true" /> <basicRegistry id="basic" realm="BasicRealm"> <user name="testuser" password="testuserpwd" /> </basicRegistry> </server
INSERT INTO OAuthDBSchema.OAUTH20CLIENTCONFIG
(
COMPONENTID,
CLIENTID,
CLIENTSECRET,
DISPLAYNAME,
REDIRECTURI,
ENABLED
)
VALUES
(
'DBOAuth20Provider',
'key',
'secret',
'My Client',
'https://localhost:9443/oauth/redirect.jsp',
1
)
註: Componentid 必須與 server.xml 檔中 oauthProvider 元素的 ID 相同。
配置資料庫之後,您可以向資料庫登錄用戶端,以便在其中移入資訊。如需相關資訊,請參閱將「OpenID Connect 提供者」配置成接受用戶端登錄要求。