지속적 OAuth 서비스에 대한 IBM DB2
IBM® DB2®를 지속적 OAuth 서비스에 사용할 수 있습니다. 편의 및 참조 용도로 이 주제는 OAuth 지속적 서비스를 위해 DB2를 구성하는 데 필요한 단계를 설명합니다.
지속적 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, 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 제공자 구성의 내용을 참조하십시오.