JPA Storage Service
Fullständig dokumentation för JPAStorageService finns här https://wiki.shibboleth.net/confluence/display/IDP4/StorageConfiguration#StorageConfiguration-JPAStorageService
- Ladda ner och lägg HikariCP drivers i "/opt/shibboleth-idp/edit-webapp/WEB-INF/lib/".
- HikariCP - https://github.com/brettwooldridge/HikariCP
- https://mvnrepository.com/artifact/com.zaxxer/HikariCP (version 3.4.5 är senaste vi har testat)
- HikariCP - https://github.com/brettwooldridge/HikariCP
- JPA Storage Service använder Hibernate ORM.
- Ladda ner orm.xml från https://www.switch.ch/aai/guides/idp/installation/orm.xml
- Lägg den nedladdade filen i "/opt/shibboleth-idp/edit-webapp/WEB-INF/classes/META-INF"
- Lägg till följande javabönor mot slutet av /opt/shibboleth-idp/conf/global.xml (följande är ett exempel för HikariCP och mysql)
- Uppdatera lösenordet för databasanvändaren på sista raden, har man använt installer-scriptet så finns lösenordet i global.xml mot slutet av befintlig fil.
Bean defintion
<bean id="shibboleth.JPAStorageService" class="org.opensaml.storage.impl.JPAStorageService" p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}" 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="shibboleth.JPAStorageService.DataSource" /> <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> <bean id="shibboleth.JPAStorageService.DataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close" lazy-init="true" p:driverClassName="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/shibboleth?autoReconnect=true&localSocketAddress=127.0.0.1&connectTimeout=1800&initialTimeout=2&logSlowQueries=true&autoReconnectForPools=true" p:username="shibboleth" p:password="p@ssw0rd" />
- Skapa databastabell i MySQL
MySQL tabell
CREATE TABLE `StorageRecords` ( `context` varchar(255) NOT NULL, `id` varchar(255) NOT NULL, `expires` bigint(20) DEFAULT NULL, `value` longtext NOT NULL, `version` bigint(20) NOT NULL, PRIMARY KEY (`context`,`id`), KEY `storagerecords_expires_index` (`expires`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; GRANT ALL PRIVILEGES ON `shibboleth`.`StorageRecords` TO 'shibboleth'@'localhost';
- Bygg om WAR-filen
/opt/shibboleth-idp/bin/build.sh -Didp.target.dir=/opt/shibboleth-idp