지속적 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> 요소의 유일한 필수 속성은 해당 값이 <dataSource> 요소의 ID여야 하는 <dataSourceRef>입니다.

    다음 예제는 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 데이터 소스를 구성하십시오. 데이터 소스 JNDI(Java™ Naming and Directory Interface) 이름을 jdbc/OAuth2DB로 설정해야 합니다. JNDI 이름은 server.xml 파일에 있는 dataSource 요소의 <jndiName> 속성과 일치해야 합니다. 데이터베이스 이름(예: D:\oauth2db)을 입력하십시오.

    지속적 OAuth 서비스용 DB2® 및 Derby 구성에 대한 자세한 정보는 지속적 OAuth 서비스용 IBM® DB2지속적 OAuth 서비스용 Derby 데이터베이스를 참조하십시오. 이러한 구성을 샘플 템플리트로 사용하여 다른 데이터베이스를 구성할 수 있습니다.

  4. 등록된 OAuth 클라이언트를 데이터베이스에 추가하십시오.

    클라이언트를 데이터베이스에 유지하려면 클라이언트를 데이터베이스에 저장해야 합니다. 다음 SQL문은 dbclient01dbclient02 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;
    참고: Componentidserver.xml 파일에 있는 oauthProvider 요소의 ID와 동일해야 합니다.

주제의 유형을 표시하는 아이콘 개념 주제

파일 이름: cwlp_oauth_sql.html