用於持續性 OAuth 服務的 Derby 資料庫

持續性 OAuth 服務可以使用 Derby 資料庫。 為了方便與參考之目的,這個主題記載了配置 Derby 資料庫來用於 OAuth 持續性服務所需要的步驟,資料庫可能在 OAuth 服務的遠端或本端。

如果要配置 Derby 資料庫用於持續性 OAuth 服務,請完成下列步驟:
  1. 建立一個資料庫及若干表格。
    編輯及執行下列 SQL 陳述式來建立 OAuth 資料庫和表格:
    --- Change oauth2db to the name you want for the database
    --- Connect to Derby, choose one connection option to uncomment
    --- if connecting to Derby as network server
    --- CONNECT 'jdbc:derby://localhost:1527/oauth2db;create=true';
    
    --- if connecting to embedded derby, you can change D:\oauth2db to location of database
    --- CONNECT 'jdbc:derby:D:\oauth2db;create=true';
    
    --- if creating tables in existing Derby database, remove the create=true parameter.
    
    ----- 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 DEFAULT '{}'
    );
    
    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 DEFAULT '{}'
    );
    
    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);
    
    DISCONNECT CURRENT;
    利用下列指令啟動 ij 來執行 createTables.sql 檔:
    ij createTables.sql
  2. 配置 Liberty 伺服器。
    下列範例是使用 Derby 資料庫儲存庫之 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="OAuthConfigDerby" filter="request-url%=ssodemo"
                     oauthOnly="false">
        <databaseStore dataSourceRef="OAuthDerbyDataSource" />
      </oauthProvider>
    
      <jdbcDriver id="DerbyEmbedded" libraryRef="DerbyLib" />
    
      <library id="DerbyLib" filesetRef="DerbyFileset" />
    
      <fileset id="DerbyFileset" dir="${DERBY_JDBC_DRIVER_PATH}"
               includes="derby.jar" />
    
      <dataSource id="OAuthDerbyDataSource" jndiName="jdbc/OAuth2DB"
                  jdbcDriverRef="DerbyEmbedded">
        <properties.derby.embedded databaseName="D:\oauth2db"
                                   createDatabase="create" />
      </dataSource>
    
      <webAppSecurity allowFailOverToBasicAuth="true" />
    
      <basicRegistry id="basic" realm="BasicRealm">
        <user name="testuser" password="testuserpwd" />
      </basicRegistry>
    </server>
    註: Componentid 必須與 server.xml 檔中 oauthProvider 元素的 ID 相同。

配置資料庫之後,您可以向資料庫登錄用戶端,以便在其中移入資訊。如需相關資訊,請參閱將「OpenID Connect 提供者」配置成接受用戶端登錄要求


指示主題類型的圖示 概念主題

檔名:cwlp_oauth_derby.html