设置 Jazz授权服务器 Oracle 数据库
Jazz®授权服务器配置为使用默认的 Apache Derby 数据库,但您可能希望在Jazz授权服务器环境中使用企业数据库,例如 Oracle。 Apache Derby 数据库仅用于POC环境下的评估,不用于生产环境。 此限制适用于所有 Engineering Lifecycle Management 应用程序,包括 Jazz授权服务器。
过程
- 创建一个名为 createOauthOracle.sql 的文件。 请参考以下SQL示例,创建 Jazz授权服务器所需的表空间。
请注意,这些值是示例,您应根据自己的使用情况和环境加以变更。
createOauthOracle.sql 会创建两个表空间:OAUTH 和 OAUTH_TMP,并且会在 OAUTH 表空间中创建表。 如果您要使用现有的表空间,您可将 CREATE TABLE 语句变更为使用现有表空间。 如果要创建新的表空间,您应编辑 DATAFILE 和 TEMPFILE 子句,使其指向要用于该表空间的目录。
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 ---- - 在您完成 createOauthOracle.sql 脚本的自定义后,打开SQL Plus并以 SYSDBA 的身份登录,然后运行SQL脚本:
@createOauthOracle.sql - 创建数据库表后,必须配置 Jazz授权服务器才能使用这些表。 进入 Jazz授权服务器安装目录,打开 appConfig.xml 文件进行编辑。 在Windows系统中, appConfig.xml 文件的默认路径为 C:\IBM\JazzAuthServer\wlp\usr\servers\jazzop ,在 Linux 系统中为 /opt/IBM/JazzAuthServer/wlp/usr/servers/jazzop 。
- 注释掉以下 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> - 添加下一节,以配置 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 服务器的主机名。
- 在 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> - 保存并关闭 appConfig.xml 文件。
- 请将您的 Oracle 服务器中的 Oracle ojdbc8.jar JDBC 驱动程序复制到以下目录: opt/IBM/JazzAuthServer/wlp/usr/shared/config/lib/global 。