This is an automated email from the ASF dual-hosted git repository.
bhliva pushed a commit to branch EPMCDLAB-1186
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/EPMCDLAB-1186 by this push:
new 0c7788f DLAB-000 added possibility to specify iam endpoint and region
0c7788f is described below
commit 0c7788ff0e8077a659384a34320c01f0d302ead6
Author: bhliva <[email protected]>
AuthorDate: Mon Feb 18 16:15:54 2019 +0200
DLAB-000 added possibility to specify iam endpoint and region
---
.../com/epam/dlab/auth/aws/dao/AwsUserDAOImpl.java | 28 ++++++++++++++++++----
services/security-service/security.yml | 2 ++
.../dlab/auth/SecurityServiceConfiguration.java | 13 ++++++++++
.../auth/modules/AwsSecurityServiceModule.java | 13 ++++++++++
4 files changed, 52 insertions(+), 4 deletions(-)
diff --git
a/services/security-aws/src/main/java/com/epam/dlab/auth/aws/dao/AwsUserDAOImpl.java
b/services/security-aws/src/main/java/com/epam/dlab/auth/aws/dao/AwsUserDAOImpl.java
index 16cc24b..bc3fa65 100644
---
a/services/security-aws/src/main/java/com/epam/dlab/auth/aws/dao/AwsUserDAOImpl.java
+++
b/services/security-aws/src/main/java/com/epam/dlab/auth/aws/dao/AwsUserDAOImpl.java
@@ -13,30 +13,40 @@
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 com.epam.dlab.auth.aws.dao;
import com.amazonaws.auth.AWSCredentials;
+import com.amazonaws.regions.Region;
+import com.amazonaws.regions.Regions;
import com.amazonaws.services.identitymanagement.AmazonIdentityManagement;
import
com.amazonaws.services.identitymanagement.AmazonIdentityManagementClient;
import com.amazonaws.services.identitymanagement.model.*;
import com.google.inject.Inject;
import com.google.inject.Singleton;
+import com.google.inject.name.Named;
import lombok.extern.slf4j.Slf4j;
+import javax.annotation.Nullable;
import java.util.List;
+import java.util.Optional;
@Singleton
@Slf4j
public class AwsUserDAOImpl implements AwsUserDAO {
+ private final String endpoint;
+ private final String region;
private volatile AmazonIdentityManagement aim;
@Inject
- public AwsUserDAOImpl(AWSCredentials credentials) {
- this.aim = new AmazonIdentityManagementClient(credentials);
+ public AwsUserDAOImpl(AWSCredentials credentials,
+ @Nullable
@Named("iamEndpoint") String endpoint,
+ @Nullable @Named("iamRegion")
String region) {
+ this.endpoint = endpoint;
+ this.region = region;
+ this.aim = getClient(credentials);
}
@Override
@@ -48,7 +58,7 @@ public class AwsUserDAOImpl implements AwsUserDAO {
@Override
public void updateCredentials(AWSCredentials credentials) {
- this.aim = new AmazonIdentityManagementClient(credentials);
+ this.aim = getClient(credentials);
}
@Override
@@ -75,4 +85,14 @@ public class AwsUserDAOImpl implements AwsUserDAO {
}
return user;
}
+
+ private AmazonIdentityManagementClient getClient(AWSCredentials
credentials) {
+ final AmazonIdentityManagementClient client =
+ new AmazonIdentityManagementClient(credentials);
+ Optional.ofNullable(endpoint)
+ .ifPresent(client::setEndpoint);
+ Optional.ofNullable(region)
+ .ifPresent(r ->
client.setRegion(Region.getRegion(Regions.fromName(r))));
+ return client;
+ }
}
diff --git a/services/security-service/security.yml
b/services/security-service/security.yml
index aa294e3..7707c26 100644
--- a/services/security-service/security.yml
+++ b/services/security-service/security.yml
@@ -150,6 +150,8 @@ userInfoPersistenceEnabled: true
<#if CLOUD_TYPE == "aws">
awsUserIdentificationEnabled: true
+awsUserIdentificationEndpoint: http://${REPOSITORY_HOST}/iam
+awsUserIdentificationEndpointRegion: us-east-1
loginAuthenticationTimeout: 10
<#elseif CLOUD_TYPE == "azure">
loginAuthenticationTimeout: 20
diff --git
a/services/security-service/src/main/java/com/epam/dlab/auth/SecurityServiceConfiguration.java
b/services/security-service/src/main/java/com/epam/dlab/auth/SecurityServiceConfiguration.java
index 5593978..3ed3aa2 100644
---
a/services/security-service/src/main/java/com/epam/dlab/auth/SecurityServiceConfiguration.java
+++
b/services/security-service/src/main/java/com/epam/dlab/auth/SecurityServiceConfiguration.java
@@ -58,6 +58,11 @@ public class SecurityServiceConfiguration extends
ServiceConfiguration {
private LdapConnectionConfig ldapConfiguration;
+ @JsonProperty
+ private String awsUserIdentificationEndpoint;
+ @JsonProperty
+ private String awsUserIdentificationEndpointRegion;
+
public SecurityServiceConfiguration() {
super();
}
@@ -117,4 +122,12 @@ public class SecurityServiceConfiguration extends
ServiceConfiguration {
public GcpLoginConfiguration getGcpLoginConfiguration() {
return gcpLoginConfiguration;
}
+
+ public String getAwsUserIdentificationEndpoint() {
+ return awsUserIdentificationEndpoint;
+ }
+
+ public String getAwsUserIdentificationEndpointRegion() {
+ return awsUserIdentificationEndpointRegion;
+ }
}
diff --git
a/services/security-service/src/main/java/com/epam/dlab/auth/modules/AwsSecurityServiceModule.java
b/services/security-service/src/main/java/com/epam/dlab/auth/modules/AwsSecurityServiceModule.java
index d07bb7a..779ada4 100644
---
a/services/security-service/src/main/java/com/epam/dlab/auth/modules/AwsSecurityServiceModule.java
+++
b/services/security-service/src/main/java/com/epam/dlab/auth/modules/AwsSecurityServiceModule.java
@@ -30,6 +30,7 @@ import com.epam.dlab.cloud.CloudModule;
import com.google.inject.Injector;
import com.google.inject.Provides;
import com.google.inject.Singleton;
+import com.google.inject.name.Named;
import io.dropwizard.setup.Environment;
public class AwsSecurityServiceModule extends CloudModule {
@@ -67,6 +68,18 @@ public class AwsSecurityServiceModule extends CloudModule {
}
}
+ @Provides
+ @Named("iamEndpoint")
+ private String iamEndpoint() {
+ return conf.getAwsUserIdentificationEndpoint();
+ }
+
+ @Provides
+ @Named("iamRegion")
+ private String iamRegion() {
+ return conf.getAwsUserIdentificationEndpointRegion();
+ }
+
private AWSCredentials devAwsCredentials() {
return new AWSCredentials() {
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]