package org.cagrid.dorian.service.idp; import gov.nih.nci.cagrid.common.Utils; import org.cagrid.core.common.FaultHelper; import org.cagrid.dorian.model.exceptions.DorianInternalException; import org.cagrid.dorian.policy.AccountInformationModificationPolicy; public class IdentityProviderProperties { private static final String DEFAULT_NAME = "Dorian"; private static final int MIN_UID_LENGTH = 4; private static final int MAX_UID_LENGTH = 255; private static final int MAX_NAME_LENGTH = 255; private String name; private boolean autoRenewAssertingCredentials = false; private String assertingCredentialsEncryptionPassword; private int minUserIdLength = 4; private int maxUserIdLength = 255; private IdPRegistrationPolicy registrationPolicy; private PasswordSecurityPolicy passwordSecurityPolicy; private AccountInformationModificationPolicy accountInformationModificationPolicy; public String getName() { if (name == null) { name = DEFAULT_NAME; } return name; } public void setName(String name) throws DorianInternalException { if (name.length() > MAX_NAME_LENGTH) { DorianInternalException f = FaultHelper.createFaultException( DorianInternalException.class, "The name of the Dorian IdP cannot exceed " + MAX_NAME_LENGTH + " characters."); throw f; } this.name = name; } public boolean autoRenewAssertingCredentials() { return autoRenewAssertingCredentials; } public void setAutoRenewAssertingCredentials( boolean autoRenewAssertingCredentials) { this.autoRenewAssertingCredentials = autoRenewAssertingCredentials; } public String getAssertingCredentialsEncryptionPassword() { return assertingCredentialsEncryptionPassword; } public void setAssertingCredentialsEncryptionPassword( String assertingCredentialsEncryptionPassword) throws DorianInternalException { if (Utils.clean(assertingCredentialsEncryptionPassword) == null) { DorianInternalException f = FaultHelper.createFaultException( DorianInternalException.class, "Invalid asserting credentials password specified."); throw f; } this.assertingCredentialsEncryptionPassword = assertingCredentialsEncryptionPassword; } public int getMinUserIdLength() { return minUserIdLength; } public void setMinUserIdLength(int minUserIdLength) throws DorianInternalException { if (minUserIdLength < MIN_UID_LENGTH) { DorianInternalException f = FaultHelper.createFaultException( DorianInternalException.class, "The minimum user id must be at least " + MIN_UID_LENGTH + " characters."); throw f; } this.minUserIdLength = minUserIdLength; } public int getMaxUserIdLength() { return maxUserIdLength; } public void setMaxUserIdLength(int maxUserIdLength) throws DorianInternalException { if (maxUserIdLength > MAX_UID_LENGTH) { DorianInternalException f = FaultHelper.createFaultException( DorianInternalException.class, "The maximum user id must be no more than " + MAX_UID_LENGTH + " characters."); throw f; } this.maxUserIdLength = maxUserIdLength; } public IdPRegistrationPolicy getRegistrationPolicy() { return registrationPolicy; } public PasswordSecurityPolicy getPasswordSecurityPolicy() { return passwordSecurityPolicy; } public void setRegistrationPolicy(IdPRegistrationPolicy registrationPolicy) { this.registrationPolicy = registrationPolicy; } public void setPasswordSecurityPolicy( PasswordSecurityPolicy passwordSecurityPolicy) { this.passwordSecurityPolicy = passwordSecurityPolicy; } public String getAccountInformationModificationPolicy() { if (this.accountInformationModificationPolicy == null) { this.accountInformationModificationPolicy = AccountInformationModificationPolicy.ADMIN; } return accountInformationModificationPolicy.value(); } public void setAccountInformationModificationPolicy(String policy) throws DorianInternalException { if (policy.equals(AccountInformationModificationPolicy.USER.value()) || policy.equals(AccountInformationModificationPolicy.ADMIN .value())) { this.accountInformationModificationPolicy = AccountInformationModificationPolicy .fromValue(policy); } else { DorianInternalException f = FaultHelper.createFaultException( DorianInternalException.class, "The account information modification policy " + policy + ", is invalid. Please specify a valid policy (" + AccountInformationModificationPolicy.USER.value() + ", " + AccountInformationModificationPolicy.ADMIN .value() + ")."); throw f; } } }