设置 Jazz授权服务器 Oracle 数据库

Jazz®授权服务器配置为使用默认的 Apache Derby 数据库,但您可能希望在Jazz授权服务器环境中使用企业数据库,例如 Oracle。 Apache Derby 数据库仅用于POC环境下的评估,不用于生产环境。 此限制适用于所有 Engineering Lifecycle Management 应用程序,包括 Jazz授权服务器

过程

  1. 创建一个名为 createOauthOracle.sql 的文件。 请参考以下SQL示例,创建 Jazz授权服务器所需的表空间。

    请注意,这些值是示例,您应根据自己的使用情况和环境加以变更。

    createOauthOracle.sql 会创建两个表空间:OAUTHOAUTH_TMP,并且会在 OAUTH 表空间中创建表。 如果您要使用现有的表空间,您可将 CREATE TABLE 语句变更为使用现有表空间。 如果要创建新的表空间,您应编辑 DATAFILETEMPFILE 子句,使其指向要用于该表空间的目录。

    Jazz授权服务器希望找到一个名为 OAUTHDBSCHEMA 的用户,并希望在一个名为 OAUTHDBSCHEMA 的架构中找到表。 您必须在 Oracle 中创建 OAUTHDBSCHEMA 用户。 请定制 CREATE USER 语句,以指定 OAUTHDBSCHEMA 用户的密码。 创建 OAUTHDBSCHEMA 用户时,还必须使该用户与您计划用于 OAUTH 表的表空间相关联。

    CREATE TABLESPACE OAUTH DATAFILE '/home/oracle/tablespaces/OAUTH.dbf' SIZE 1G AUTOEXTEND ON EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
    CREATE TEMPORARY TABLESPACE OAUTH_TMP TEMPFILE '/home/oracle/tablespaces/OAUTH_TMP.dbf' SIZE 20M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
    CREATE USER OAUTHDBSCHEMA IDENTIFIED BY <your password> DEFAULT TABLESPACE OAUTH QUOTA UNLIMITED ON OAUTH TEMPORARY TABLESPACE OAUTH_TMP;
    GRANT CREATE PROCEDURE, CREATE SESSION, CREATE TABLE, CREATE VIEW TO OAUTHDBSCHEMA;
    
    ---- 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 NUMBER(19,0),
    LIFETIME INT,
    EXPIRES NUMBER(19,0),
    TOKENSTRING CLOB DEFAULT ‘{}’ 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 DEFAULT '{}' NOT NULL
    )
    TABLESPACE OAUTH STORAGE(INITIAL 50K);
    
    CREATE TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG 
    (
    COMPONENTID VARCHAR(256) NOT NULL, 
    CLIENTID VARCHAR(256) NOT NULL, 
    CLIENTSECRET VARCHAR(256), 
    DISPLAYNAME VARCHAR(256),
    REDIRECTURI VARCHAR(2048), 
    ENABLED INT,
    CLIENTMETADATA CLOB DEFAULT '{}' NOT NULL
    ) TABLESPACE OAUTH STORAGE(INITIAL 50K);
    
    CREATE TABLE OAuthDBSchema.OAUTH20CONSENTCACHE (
    CLIENTID VARCHAR(256) NOT NULL,
    USERID VARCHAR(256),
    PROVIDERID VARCHAR(256) NOT NULL,
    SCOPE VARCHAR(1024) NOT NULL,
    EXPIRES NUMBER(19,0),
    EXTENDEDFIELDS CLOB DEFAULT '{}' NOT NULL
    ) TABLESPACE OAUTH STORAGE(INITIAL 50K);
    
    ---- 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 OAUTHDBSCHEMA;
    GRANT ALL ON OAuthDBSchema.OAUTH20CLIENTCONFIG TO OAUTHDBSCHEMA;
    GRANT ALL ON OAuthDBSchema.OAUTH20CONSENTCACHE TO OAUTHDBSCHEMA;
    
    ---- END OF GRANT PRIVILIGES ----
  2. 在您完成 createOauthOracle.sql 脚本的自定义后,打开SQL Plus并以 SYSDBA 的身份登录,然后运行SQL脚本:
    @createOauthOracle.sql
  3. 创建数据库表后,必须配置 Jazz授权服务器才能使用这些表。 进入 Jazz授权服务器安装目录,打开 appConfig.xml 文件进行编辑。 在Windows系统中, appConfig.xml 文件的默认路径为 C:\IBM\JazzAuthServer\wlp\usr\servers\jazzop ,在 Linux 系统中为 /opt/IBM/JazzAuthServer/wlp/usr/servers/jazzop
  4. 注释掉以下 Apache Derby 数据库节:
    <dataSource id="OAuthFvtDataSource" jndiName="jdbc/OAuth2DB">
            <jdbcDriver libraryRef="DerbyLib" />
            <properties.derby.embedded
                databaseName="asDB"
                createDatabase="create" />
        </dataSource>
    
        <library id="DerbyLib">
            <fileset dir="${shared.config.dir}/lib/global" includes="derby.jar" />
        </library>
  5. 添加下一节,以配置 Oracle。 您必须对此节进行定制,以使用您特定的 Oracle 服务器:
    <jdbcDriver id="oracle" libraryRef="ORAJCC4LIB"/>
    <library id="ORAJCC4LIB" filesetRef="orajcc4" apiTypeVisibility="spec,ibm-api,third-party"/>
    <fileset dir="${shared.config.dir}/lib/global" id="orajcc4" includes="ojdbc8.jar"/>
    <dataSource id="OAUTH2ORA" jndiName="jdbc/oauthProvider" jdbcDriverRef="oracle">
    <properties.oracle password="*****" databaseName="ORCL" user="OAUTHDBSCHEMA" portNumber="1521" serverName="yourOracle.com">
    </dataSource>

    对于下列属性,确保使用正确的值:

    • 对于 password,请使用您在 Oracle 中创建 OAUTHDBSCHEMA 用户时指定的密码。
    • 对于 databaseName,请使用数据库的 Oracle SID。 示例使用 Oracle - ORCL 指定的默认值。您的值可能有所不同。
    • 对于 portNumber,请使用运行 Oracle 实例的端口号。 缺省端口号为 1521。
    • 对于 serverName,请输入 Oracle 服务器的主机名。
  6. appConfig.xml 文件的 oauthProvider 部分,更新 databaseStore 属性,使其指定 Oracle 数据源,而不是默认的 Apache Derby 数据源。 databaseStore 属性应指定 Oracle 数据源的名称,在本例中为 OAUTH2ORA
    <oauthProvider id="JazzOP"
    	    httpsRequired="true"
    		autoAuthorize="true"
    		customLoginURL="/jazzop/form/login" 
    		accessTokenLifetime="7201" 
    		authorizationGrantLifetime="604801">
    		<autoAuthorizeClient>client01</autoAuthorizeClient>
      	     <databaseStore dataSourceRef="OAUTH2ORA" /> 
    	</oauthProvider>
  7. 保存并关闭 appConfig.xml 文件。
  8. 请将您的 Oracle 服务器中的 Oracle ojdbc8.jar JDBC 驱动程序复制到以下目录: opt/IBM/JazzAuthServer/wlp/usr/shared/config/lib/global