Configuration de service OAuth permanent

WebSphere Application Server prend en charge un service OAuth 2.0 permanent en conservant les jetons et clients OAuth dans une base de données. Avec les services OAuth 2.0 permanents, un client autorisé peut accéder au service OAuth 2.0 après le redémarrage des services OAuth.

Pour configurer les services OAuth 2.0 permanents, effectuez les opérations suivantes :
  1. Configurez le fournisseur de services OAuth 2.0.

    Pour utiliser un magasin de base de données, vous devez spécifier le sous-élément <databaseStore> de l'élément <oauthProvider>. Le seul attribut requis pour l'élément <databaseStore> est <dataSourceRef>, dont la valeur doit correspondre à l'ID de l'élément <dataSource>.

    L'exemple suivant illustre un fichier server.xml pour un fournisseur OAuth qui utilise un magasin de base de données Derby :
    <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. Configurez une base de données et une table pour stocker le jeton et le client OAuth.
    1. Créez une base de données pour le service OAuth permanent. Voir la documentation du fournisseur pour créer la base de données. Dans cet exemple, le nom de la base de données est D:\oauth2db.
    2. Créez 3 tables OAuth conformément aux instructions SQL suivantes :
      ----- 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. Configurez WebSphere Application Server.

    Configurez la source de données WebSphere Application Server. Vous devez définir le nom JNDI (Java Naming and Directory Interface) jdbc/OAuth2DB pour la source de données. Le nom JNDI doit correspondre à l'attribut jndiName de l'élément <dataSource> dans le fichier server.xml. Entrez le nom de la base de données, par exemple D:\oauth2db.

    Pour plus d'informations sur la configuration de DB2 et de Derby pour les services permanents OAuth, voir IBM DB2 pour les services OAuth permanents et Base de données Derby pour les services OAuth permanents. Vous pouvez les utiliser comme modèle de configuration d'autres bases de données.

  4. Ajoutez les clients OAuth enregistrés à la base de données.

    Pour conserver un client dans une base de données, vous devez le sauvegarder dans la base de données. Les instructions SQL suivantes ajoutent les clients OAuth dbclient01 et dbclient02 à une base de données 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 ou ultérieure]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

Dispositions pour les centres de documentation | Commentaires


Icône d'horodatage Dernière mise à jour: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=cwlp_oauth_sql
Nom du fichier : cwlp_oauth_sql.html