blob: b9fb36fc16c68029f0c324570bfc8e10840d9070 [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.syncope.sra;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.syncope.common.lib.SyncopeProperties;
import org.apache.syncope.common.lib.types.SAML2BindingType;
import org.jasig.cas.client.Protocol;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.security.oauth2.core.oidc.OidcScopes;
@ConfigurationProperties(SRAProperties.PREFIX)
public class SRAProperties extends SyncopeProperties {
public static final String PREFIX = "sra";
public static final String AM_TYPE = "am-type";
public static class Global {
private URI error = URI.create("/error");
private URI postLogout = URI.create("/logout");
public URI getError() {
return error;
}
public void setError(final URI error) {
this.error = error;
}
public URI getPostLogout() {
return postLogout;
}
public void setPostLogout(final URI postLogout) {
this.postLogout = postLogout;
}
}
public enum AMType {
OIDC,
OAUTH2,
SAML2,
CAS
}
public static class OIDC {
private String configuration;
private String clientId;
private String clientSecret;
private List<String> scopes = Arrays.asList(
OidcScopes.OPENID,
OidcScopes.ADDRESS,
OidcScopes.EMAIL,
OidcScopes.PHONE,
OidcScopes.PROFILE);
public String getConfiguration() {
return configuration;
}
public void setConfiguration(final String configuration) {
this.configuration = configuration;
}
public String getClientId() {
return clientId;
}
public void setClientId(final String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(final String clientSecret) {
this.clientSecret = clientSecret;
}
public List<String> getScopes() {
return scopes;
}
public void setScopes(final List<String> scopes) {
this.scopes = scopes;
}
}
public static class OAUTH2 {
private String tokenUri;
private String authorizationUri;
private String userInfoUri;
private String userNameAttributeName;
private String jwkSetUri;
private String issuer;
private String clientId;
private String clientSecret;
private List<String> scopes = new ArrayList<>();
public String getTokenUri() {
return tokenUri;
}
public void setTokenUri(final String tokenUri) {
this.tokenUri = tokenUri;
}
public String getAuthorizationUri() {
return authorizationUri;
}
public void setAuthorizationUri(final String authorizationUri) {
this.authorizationUri = authorizationUri;
}
public String getUserInfoUri() {
return userInfoUri;
}
public void setUserInfoUri(final String userInfoUri) {
this.userInfoUri = userInfoUri;
}
public String getUserNameAttributeName() {
return userNameAttributeName;
}
public void setUserNameAttributeName(final String userNameAttributeName) {
this.userNameAttributeName = userNameAttributeName;
}
public String getJwkSetUri() {
return jwkSetUri;
}
public void setJwkSetUri(final String jwkSetUri) {
this.jwkSetUri = jwkSetUri;
}
public String getIssuer() {
return issuer;
}
public void setIssuer(final String issuer) {
this.issuer = issuer;
}
public String getClientId() {
return clientId;
}
public void setClientId(final String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(final String clientSecret) {
this.clientSecret = clientSecret;
}
public List<String> getScopes() {
return scopes;
}
public void setScopes(final List<String> scopes) {
this.scopes = scopes;
}
}
public static class SAML2 {
private SAML2BindingType authnRequestBinding = SAML2BindingType.POST;
private SAML2BindingType logoutRequestBinding = SAML2BindingType.POST;
private SAML2BindingType logoutResponseBinding = SAML2BindingType.REDIRECT;
private String entityId;
private long skew;
private String spMetadataFilePath;
private String idpMetadata;
private String keystore;
private String keystoreType;
private String keystoreStorepass;
private String keystoreKeypass;
public SAML2BindingType getAuthnRequestBinding() {
return authnRequestBinding;
}
public void setAuthnRequestBinding(final SAML2BindingType authnRequestBinding) {
this.authnRequestBinding = authnRequestBinding;
}
public SAML2BindingType getLogoutRequestBinding() {
return logoutRequestBinding;
}
public void setLogoutRequestBinding(final SAML2BindingType logoutRequestBinding) {
this.logoutRequestBinding = logoutRequestBinding;
}
public SAML2BindingType getLogoutResponseBinding() {
return logoutResponseBinding;
}
public void setLogoutResponseBinding(final SAML2BindingType logoutResponseBinding) {
this.logoutResponseBinding = logoutResponseBinding;
}
public String getEntityId() {
return entityId;
}
public void setEntityId(final String entityId) {
this.entityId = entityId;
}
public long getSkew() {
return skew;
}
public void setSkew(final int skew) {
this.skew = skew;
}
public String getSpMetadataFilePath() {
return spMetadataFilePath;
}
public void setSpMetadataFilePath(final String spMetadataFilePath) {
this.spMetadataFilePath = spMetadataFilePath;
}
public String getIdpMetadata() {
return idpMetadata;
}
public void setIdpMetadata(final String idpMetadata) {
this.idpMetadata = idpMetadata;
}
public String getKeystore() {
return keystore;
}
public void setKeystore(final String keystore) {
this.keystore = keystore;
}
public String getKeystoreType() {
return keystoreType;
}
public void setKeystoreType(final String keystoreType) {
this.keystoreType = keystoreType;
}
public String getKeystoreStorePass() {
return keystoreStorepass;
}
public void setKeystoreStorePass(final String keystoreStorePass) {
this.keystoreStorepass = keystoreStorePass;
}
public String getKeystoreKeypass() {
return keystoreKeypass;
}
public void setKeystoreKeypass(final String keystoreKeyPass) {
this.keystoreKeypass = keystoreKeyPass;
}
}
public static class CAS {
private String serverName;
private String serverPrefix;
private Protocol protocol = Protocol.CAS3;
public String getServerName() {
return serverName;
}
public void setServerName(final String serverName) {
this.serverName = serverName;
}
public String getServerPrefix() {
return serverPrefix;
}
public void setServerPrefix(final String serverPrefix) {
this.serverPrefix = serverPrefix;
}
public Protocol getProtocol() {
return protocol;
}
public void setProtocol(final Protocol protocol) {
this.protocol = protocol;
}
}
private final Global global = new Global();
private AMType amType = AMType.OIDC;
private final OIDC oidc = new OIDC();
private final OAUTH2 oauth2 = new OAUTH2();
private final SAML2 saml2 = new SAML2();
private final CAS cas = new CAS();
public Global getGlobal() {
return global;
}
public AMType getAmType() {
return amType;
}
public void setAmType(final AMType amType) {
this.amType = amType;
}
public OIDC getOidc() {
return oidc;
}
public OAUTH2 getOauth2() {
return oauth2;
}
public SAML2 getSaml2() {
return saml2;
}
public CAS getCas() {
return cas;
}
}