Instrukcje SQL dla trwałej usługi OAuth

Serwer WebSphere® Application Server obsługuje trwałą usługę OAuth 2.0 przez utrwalanie tokenów OAuth i klientów w bazie danych. W przypadku trwałych usług OAuth 2.0 autoryzowany klient może uzyskać dostęp do usługi OAuth 2.0 po zrestartowaniu usług OAuth.

Aby skonfigurować trwałe usługi OAuth 2.0 , należy wykonać następujące czynności:
  1. Skonfiguruj dostawcę usług OAuth 2.0 .

    Plik konfiguracyjny dostawcy szablonów produktu OAuthConfigSample.xml zawiera przykładowe parametry konfigurowania składnicy bazy danych Java™ Database Connectivity (JDBC) na potrzeby rejestrowania klientów OAuth.

    1. Przekształć w komentarz następujące wiersze:
      <parameter name="oauth20.client.provider.classname" type="cc" customizable="false">
        <value>com.ibm.ws.security.oauth20.plugins.BaseClientProvider</value>
      </parameter>
      <parameter name="oauth20.token.cache.classname" type="cc" customizable="false">
        <value>com.ibm.ws.security.oauth20.plugins.BaseCache</value>
      </parameter>
      <parameter name="oauth20.token.cache.jndi.tokens" type="ws" customizable="false">
        <value>services/cache/OAuth20MemTokenCache</value>
      </parameter>
      <parameter name="oauth20.token.cache.jndi.users" type="ws" customizable="false">
        <value>services/cache/OAuth20MemTokenOwnerCache</value>
      </parameter>
    2. Usuń znaki komentarza w następujących wierszach:
      <!-- Example parameters for JDBC database stores -->
      <parameter name="oauth20.client.provider.classname" type="cc" customizable="false">
        <value>com.ibm.ws.security.oauth20.plugins.db.CachedDBClientProvider</value>
      </parameter>
      <parameter name="oauth20.token.cache.classname" type="cc" customizable="false">
        <value>com.ibm.ws.security.oauth20.plugins.db.CachedDBTokenStore</value>
      </parameter>
      <parameter name="oauthjdbc.JDBCProvider" type="ws" customizable="false">
        <value>jdbc/oauthProvider</value>
      </parameter>
      <parameter name="oauthjdbc.client.table" type="ws" customizable="false">
        <value>OAuthDBSchema.OAUTH20CLIENTCONFIG</value>
      </parameter>
      <parameter name="oauthjdbc.token.table" type="ws" customizable="false">
        <value>OAuthDBSchema.OAUTH20CACHE</value>
      </parameter>
      <parameter name="oauthjdbc.CleanupInterval" type="ws" customizable="true">
        <value>3600</value>
      </parameter>
      <parameter name="oauthjdbc.CleanupBatchSize" type="ws" customizable="true">
        <value>250</value>
      </parameter>
      <parameter name="oauth20.db.token.cache.jndi.tokens" type="ws" customizable="false">
        <value>services/cache/OAuth20DBTokenCache</value>
      </parameter>
      <parameter name="oauth20.db.token.cache.jndi.clients" type="ws" customizable="false">
        <value>services/cache/OAuth20DBClientCache</value>
      </parameter>
  2. Skonfiguruj bazę danych i tabelę do przechowywania znacznika OAuth i klienta.
    1. Utwórz bazę danych dla trwałej usługi OAuth. Informacje na temat tworzenia bazy danych można znaleźć w dokumentacji dostawcy. W tym temacie założono, że nazwa bazy danych utworzona dla protokołu OAuth to D:\oauth2db.
    2. Utwórz dwie tabele OAuth zgodnie z definicją następującej instrukcji SQL:
      ----- 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);
  3. Skonfiguruj serwer WebSphere Application Server.

    Skonfiguruj źródło danych serwera WebSphere Application Server . Nazwa JNDI źródła danych musi być ustawiona na jdbc/oauthProvider. Nazwa JNDI musi być zgodna z wartością parametru oauthjdbc.JDBCProvider w pliku konfiguracyjnym dostawcy. Wybierz nazwę bazy danych, która ma być zgodna z nazwą utworzoną w pierwszym kroku, na przykład D:\oauth2db.

    Dołączono konfigurację usług trwałych produktu DB2® lub Derby dla usług trwałych OAuth. Można ich użyć jako szablonu przykładowego w celu skonfigurowania innych baz danych.

  4. Dodaj zarejestrowane klienty OAuth do bazy danych.

    Aby utrwalić klienta w bazie danych, należy zapisać klienta w bazie danych. Następujące instrukcje SQL dodają klienty OAuth dbclient01 i dbclient02 do bazy danych 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;