Shibboleth IdP V5より、JPA StorageServiceが廃止されてJDBC StorageServiceに置き換わることがアナウンスされています。[1]
本ページでは、JPA StorageServiceからJDBC StorageServiceへのマイグレーション方法について説明します。各StorageServiceの詳細についてはShibboleth Projectのページをご参照ください。
- https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631707/StorageConfiguration
- https://shibboleth.atlassian.net/wiki/spaces/IDPPLUGINS/pages/2989096970/JDBCStorageService
1. JPA StorageService利用の確認
下記コマンドを実行して、Shibboleth IdPでJPA StorageServiceを利用しているか確認します。
grepコマンドの出力がない場合はJPA StorageServiceを利用していませんので、JDBC StorageServiceへのマイグレーションは必要ありません。
$ grep '^[^#].*JPAStorageService' /opt/shibboleth-idp/conf/idp.properties idp.consent.StorageService = shibboleth.JPAStorageService
2. JDBC StorageServiceプラグインのインストール
Shibboleth IdP 4.2およびそれ以降の場合
Shibboleth IdP 4.1の場合
3. Shibboleth IdPの設定変更
JPA StorageServiceからJDBC StorageServiceにShibboleth IdPの設定を変更します。
/opt/shibboleth-idp/conf/global.xml
/opt/shibboleth-idp/conf/global.xml@@ -14,24 +14,10 @@ <!-- Use this file to define any custom beans needed globally. --> - <bean id="shibboleth.JPAStorageService" - class="org.opensaml.storage.impl.JPAStorageService" + <bean id="JDBCStorageService" parent="shibboleth.JDBCStorageService" p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}" + p:dataSource-ref="MyDataSource" + p:transactionIsolation="4" + p:retryableErrors="40001" + /> - c:factory-ref="shibboleth.JPAStorageService.EntityManagerFactory" /> - - <bean id="shibboleth.JPAStorageService.EntityManagerFactory" - class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> - <property name="persistenceUnitName" value="storageservice" /> - <property name="packagesToScan" value="org.opensaml.storage.impl" /> - <property name="dataSource" ref="MyDataSource" /> - <property name="jpaVendorAdapter" ref="shibboleth.JPAStorageService.JPAVendorAdapter" /> - <property name="jpaDialect"> - <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> - </property> - </bean> - - <bean id="shibboleth.JPAStorageService.JPAVendorAdapter" - class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> - <property name="database" value="MYSQL" /> - </bean> <!-- A DataSource bean suitable for use in the idp.persistentId.dataSource property. -->
- /opt/shibboleth-idp/conf/idp.properties
上記 1.のgrepコマンドで出力された変数の値を
shibboleth.JPAStorageService
からJDBCStorageService
に変更します。/opt/shibboleth-idp/conf/idp.properties@@ -142,5 +142,5 @@ idp.session.secondaryServiceIndex=true # Set to "shibboleth.StorageService" or custom bean for alternate storage of consent -idp.consent.StorageService = shibboleth.JPAStorageService +idp.consent.StorageService = JDBCStorageService # Default consent auditing formats
4. Jettyの再起動
Jettyを再起動します。
# systemctl restart jetty