blob: 5defe8c1eb02c57073f1431ba98789fdff055332 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cxf.fediz.service.idp.service.jpa;
import java.net.URL;
import java.util.Arrays;
import java.util.Collections;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.apache.cxf.fediz.service.idp.domain.FederationType;
import org.apache.cxf.fediz.service.idp.domain.TrustType;
import org.apache.wss4j.dom.WSConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public class DBLoaderImpl implements DBLoader {
public static final String NAME = "DEMODBLOADER";
private static final Logger LOG = LoggerFactory.getLogger(DBLoaderImpl.class);
private EntityManager em;
@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
this.em = entityManager;
}
@Override
public String getName() {
return NAME;
}
//CHECKSTYLE:OFF: ExecutableStatementCount
@Override
public void load() {
try {
ClaimEntity claimEntity1 = new ClaimEntity();
claimEntity1.setClaimType("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname");
claimEntity1.setDisplayName("firstname");
claimEntity1.setDescription("Description for firstname");
em.persist(claimEntity1);
ClaimEntity claimEntity2 = new ClaimEntity();
claimEntity2.setClaimType("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname");
claimEntity2.setDisplayName("lastname");
claimEntity2.setDescription("Description for lastname");
em.persist(claimEntity2);
ClaimEntity claimEntity3 = new ClaimEntity();
claimEntity3.setClaimType("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress");
claimEntity3.setDisplayName("email");
claimEntity3.setDescription("Description for email");
em.persist(claimEntity3);
ClaimEntity claimEntity4 = new ClaimEntity();
claimEntity4.setClaimType("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role");
claimEntity4.setDisplayName("role");
claimEntity4.setDescription("Description for role");
em.persist(claimEntity4);
ApplicationEntity entity = new ApplicationEntity();
entity.setEncryptionCertificate("");
entity.setLifeTime(3600);
entity.setProtocol("http://docs.oasis-open.org/wsfed/federation/200706");
entity.setRealm("urn:org:apache:cxf:fediz:fedizhelloworld");
entity.setRole("ApplicationServiceType");
entity.setServiceDescription("Web Application to illustrate WS-Federation");
entity.setServiceDisplayName("Fedizhelloworld");
entity.setTokenType("http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0");
// must be persistet here already as the ApplicationClaimEntity requires the Application Id
em.persist(entity);
ApplicationClaimEntity ace1 = new ApplicationClaimEntity(entity, claimEntity1);
ace1.setOptional(true);
em.persist(ace1);
entity.getRequestedClaims().add(ace1);
ApplicationClaimEntity ace2 = new ApplicationClaimEntity(entity, claimEntity2);
ace2.setOptional(true);
em.persist(ace2);
entity.getRequestedClaims().add(ace2);
ApplicationClaimEntity ace3 = new ApplicationClaimEntity(entity, claimEntity3);
ace3.setOptional(true);
em.persist(ace3);
entity.getRequestedClaims().add(ace3);
ApplicationClaimEntity ace4 = new ApplicationClaimEntity(entity, claimEntity4);
ace4.setOptional(false);
em.persist(ace4);
entity.getRequestedClaims().add(ace4);
em.persist(entity);
TrustedIdpEntity entity3 = new TrustedIdpEntity();
entity3.setCacheTokens(true);
entity3.setCertificate("trusted cert");
entity3.setDescription("Realm B description");
entity3.setFederationType(FederationType.FEDERATE_IDENTITY);
entity3.setName("Realm B");
entity3.setProtocol("http://docs.oasis-open.org/wsfed/federation/200706");
entity3.setRealm("urn:org:apache:cxf:fediz:idp:realm-B");
entity3.setTrustType(TrustType.PEER_TRUST);
entity3.setUrl("https://localhost:12443/fediz-idp-remote/federation");
em.persist(entity3);
IdpEntity idpEntity = new IdpEntity();
idpEntity.getApplications().add(entity);
idpEntity.getTrustedIdps().add(entity3);
idpEntity.setCertificate("stsKeystoreA.properties");
idpEntity.setCertificatePassword("realma");
idpEntity.setIdpUrl(new URL("https://localhost:9443/fediz-idp/federation"));
idpEntity.setRealm("urn:org:apache:cxf:fediz:idp:realm-A");
idpEntity.setStsUrl(new URL("https://localhost:9443/fediz-idp-sts/REALMA"));
idpEntity.setServiceDisplayName("REALM A");
idpEntity.setServiceDescription("IDP of Realm A");
idpEntity.setUri("realma");
idpEntity.setProvideIdpList(true);
idpEntity.setAuthenticationURIs(
Collections.singletonMap("default", "/login/default")
);
idpEntity.setSupportedProtocols(Arrays.asList(
"http://docs.oasis-open.org/wsfed/federation/200706",
"http://docs.oasis-open.org/ws-sx/ws-trust/200512"
));
idpEntity.getClaimTypesOffered().add(claimEntity1);
idpEntity.getClaimTypesOffered().add(claimEntity2);
idpEntity.getClaimTypesOffered().add(claimEntity3);
idpEntity.getClaimTypesOffered().add(claimEntity4);
idpEntity.setTokenTypesOffered(Arrays.asList(
WSConstants.SAML2_NS,
WSConstants.SAML_NS
));
idpEntity.setUseCurrentIdp(true);
em.persist(idpEntity);
em.flush();
} catch (Exception ex) {
LOG.warn("Failed to initialize DB with data", ex);
}
}
}