Skip to content

Commit

Permalink
[SYNCOPE-1771] Adding support for delegated auth via Google, Keycloak…
Browse files Browse the repository at this point in the history
… and Apple ID
  • Loading branch information
ilgrosso committed Jul 21, 2023
1 parent 2cb12ea commit 54d62e5
Show file tree
Hide file tree
Showing 6 changed files with 279 additions and 52 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/*
* 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.common.lib.auth;

import java.util.Map;
import org.apache.syncope.common.lib.to.AuthModuleTO;

public class AppleOIDCAuthModuleConf extends AbstractOIDCAuthModuleConf implements AuthModuleConf {

private static final long serialVersionUID = -471527731042579522L;

/**
* Client secret expiration timeout.
* This settings supports the java.time.Duration syntax.
*/
protected String timeout = "PT30S";

/**
* Apple team identifier.
* Usually, 10 character string given to you by Apple.
*/
protected String teamId;

/**
* Private key obtained from Apple.
* Must point to a resource that resolved to an elliptic curve (EC) private key.
*/
protected String privateKey;

/**
* The identifier for the private key.
* Usually the 10 character Key ID of the private key you create in Apple.
*/
protected String privateKeyId;

public String getTimeout() {
return timeout;
}

public void setTimeout(final String timeout) {
this.timeout = timeout;
}

public String getPrivateKey() {
return privateKey;
}

public void setPrivateKey(final String privateKey) {
this.privateKey = privateKey;
}

public String getPrivateKeyId() {
return privateKeyId;
}

public void setPrivateKeyId(final String privateKeyId) {
this.privateKeyId = privateKeyId;
}

public String getTeamId() {
return teamId;
}

public void setTeamId(final String teamId) {
this.teamId = teamId;
}

@Override
public Map<String, Object> map(final AuthModuleTO authModule, final Mapper mapper) {
return mapper.map(authModule, this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,18 @@ interface Mapper {

Map<String, Object> map(AuthModuleTO authModule, JaasAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, OAuth20AuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, OIDCAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, AzureOIDCAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, GoogleOIDCAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, KeycloakOIDCAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, AppleOIDCAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, SAML2IdPAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, SyncopeAuthModuleConf conf);
Expand All @@ -49,10 +59,6 @@ interface Mapper {
Map<String, Object> map(AuthModuleTO authModule, U2FAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, SimpleMfaAuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, OAuth20AuthModuleConf conf);

Map<String, Object> map(AuthModuleTO authModule, AzureAuthModuleConf conf);
}

Map<String, Object> map(AuthModuleTO authModule, Mapper mapper);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import java.util.Map;
import org.apache.syncope.common.lib.to.AuthModuleTO;

public class AzureAuthModuleConf extends AbstractOIDCAuthModuleConf implements AuthModuleConf {
public class AzureOIDCAuthModuleConf extends AbstractOIDCAuthModuleConf implements AuthModuleConf {

private static final long serialVersionUID = -471527731042579522L;

Expand All @@ -47,5 +47,4 @@ public void setTenant(final String tenant) {
public Map<String, Object> map(final AuthModuleTO authModule, final Mapper mapper) {
return mapper.map(authModule, this);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* 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.common.lib.auth;

import java.util.Map;
import org.apache.syncope.common.lib.to.AuthModuleTO;

public class GoogleOIDCAuthModuleConf extends AbstractOIDCAuthModuleConf implements AuthModuleConf {

private static final long serialVersionUID = -471527731042579522L;

@Override
public Map<String, Object> map(final AuthModuleTO authModule, final Mapper mapper) {
return mapper.map(authModule, this);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
* 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.common.lib.auth;

import java.util.Map;
import org.apache.syncope.common.lib.to.AuthModuleTO;

public class KeycloakOIDCAuthModuleConf extends AbstractOIDCAuthModuleConf implements AuthModuleConf {

private static final long serialVersionUID = -471527731042579522L;

/**
* Keycloak realm used to construct metadata discovery URI.
*/
protected String realm;

/**
* Keycloak base URL used to construct metadata discovery URI.
*/
protected String baseUri;

public String getRealm() {
return realm;
}

public void setRealm(final String realm) {
this.realm = realm;
}

public String getBaseUri() {
return baseUri;
}

public void setBaseUri(final String baseUri) {
this.baseUri = baseUri;
}

@Override
public Map<String, Object> map(final AuthModuleTO authModule, final Mapper mapper) {
return mapper.map(authModule, this);
}
}
Loading

0 comments on commit 54d62e5

Please sign in to comment.