パーシスタント OAuth サービスの構成

WebSphere® Application Server では、データベースで OAuth トークンおよびクライアントを永続化することで、パーシスタント OAuth 2.0 サービスがサポートされます。パーシスタント OAuth 2.0 サービスを使用して、許可されたクライアントは OAuth サービスの再始動後に OAuth 2.0 サービスにアクセスできます。

パーシスタント OAuth 2.0 サービスを構成するには、以下のステップを実行します。
  1. OAuth 2.0 サービス・プロバイダーを構成します。

    データベース・ストアを使用するには、<oauthProvider> エレメントの <databaseStore> サブエレメントを指定する必要があります。<databaseStore> エレメントの唯一の必須属性は <dataSourceRef> であり、この値を <dataSource> エレメントの ID にする必要があります。

    以下の例は、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="OAuthFvtDataSource" />
      </oauthProvider>
    
      <jdbcDriver id="DerbyEmbedded" libraryRef="DerbyLib" />
    
      <library id="DerbyLib" fileSetRef="DerbyFileset" />
    
      <fileset id="DerbyFileset" dir="${DERBY_JDBC_DRIVER_PATH}"
               includes="derby.jar" />
    
      <dataSource id="OAuthFvtDataSource" 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>
  2. OAuth トークンおよびクライアントを保管するためのデータベースおよび表をセットアップします。
    1. パーシスタント OAuth サービス用のデータベースを作成します。データベースの作成について、ベンダーの資料を参照してください。この例では、データベース名は D:¥oauth2db です。
    2. 以下の SQL ステートメントによって定義される 3 つの OAuth 表を作成します。
      ----- 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);
  3. WebSphere Application Server を構成します。

    WebSphere Application Server データ・ソースを構成します。データ・ソースの Java Naming and Directory Interface (JNDI) 名を jdbc/OAuth2DB に設定する必要があります。JNDI 名は、server.xml ファイル内の dataSource エレメントの <jndiName> 属性に一致している必要があります。データベース名を入力します (例えば、D:¥oauth2db)。

    OAuth パーシスタント・サービス用の DB2® および Derby の構成について詳しくは、『パーシスタント OAuth サービス用の IBM DB2』および『パーシスタント OAuth サービス用の Derby データベース』を参照してください。これらをサンプル・テンプレートとして使用して他のデータベースを構成することができます。

  4. 登録されている OAuth クライアントをデータベースに追加します。

    データベースでクライアントを永続化するには、クライアントをデータベースに保存する必要があります。 以下の SQL ステートメントは、dbclient01 および dbclient02 OAuth クライアントを Derby データベースに追加します。
    CONNECT 'jdbc:derby:D:¥oauth2db';
    INSERT INTO OAuthDBSchema.OAUTH20CLIENTCONFIG VALUES 
    (
      'OAuthConfigDerby', 
      'dbclient01', 
      'secret', 
      'dbclient01', 
      'http://localhost:9080/oauthclient/redirect.jsp', 
      1
    ),
    (
      'OAuthConfigDerby', 
      'dbclient02', 
      'secret', 
      'dbclient02', 
      'http://localhost:9080/oauthclient/redirect.jsp', 
      1
    );
    DISCONNECT CURRENT;
    [8.5.5.2 以降]注: Componentid は、server.xml ファイル内の oauthProvider エレメントの ID と同じでなければなりません。

トピックのタイプを示すアイコン 概念トピック

インフォメーション・センターに関するご使用条件 | フィードバック


タイム・スタンプ・アイコン 最終更新: 2015 年 6 月 17日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=cwlp_oauth_sql
ファイル名: cwlp_oauth_sql.html