IBM DB2 pour les services OAuth permanents

Vous pouvez utiliser IBM® DB2 pour les services OAuth permanents. Pour des raisons pratiques, cette rubrique présente la procédure de configuration de DB2 pour le service permanent OAuth.

Pour configurer DB2 pour les services OAuth permanents, procédez comme suit :
  1. Créez une base de données et des tables.
    Editez et exécutez l'instruction SQL ci-dessous pour créer une base de données et une table OAuth :
    -- 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 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);
    
    ---- 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;
    Le port d'écoute DB2 par défaut est 50000. Si vous souhaitez le rechercher, exécutez la commande suivante et recherchez la valeur du paramètre SVCENAME. S'il s'agit d'un numéro, il s'agit du numéro de port. S'il s'agit d'un nom, recherchez-le dans le fichier /etc/services ou son équivalent Windows si vous utilisez Windows.
    Linux/Unix: db2 get dbm cfg | grep SVCENAME
    Windows:    db2 get dbm cfg | findstr SVCENAME
    Vous pouvez créer une base de données et des tables dans DB2 en exécutant l'instruction suivante :
    db2 -tvf createTables.sql
  2. Configurez le serveur Liberty.
    L'exemple suivant illustre un fichier server.xml pour un fournisseur OAuth qui utilise un magasin de base de données DB2 :
    <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
L'exemple ci-dessous ajoute un client à DB2 :
INSERT INTO OAuthDBSchema.OAUTH20CLIENTCONFIG 
(
  COMPONENTID, 
  CLIENTID, 
  CLIENTSECRET, 
  DISPLAYNAME, 
  REDIRECTURI, 
  ENABLED
) 
VALUES 
(
  'DBOAuth20Provider', 
  'key', 
  'secret', 
  'My Client', 
  'https://localhost:9443/oauth/redirect.jsp', 
  1
)
Remarque : L'élément Componentid doit être identique à l'ID de l'élément oauthProvider dans le fichier server.xml.

Icône indiquant le type de rubrique Rubrique de concept

Nom du fichier : cwlp_oauth_db2.html