in services/src/main/java/org/apache/custos/service/management/TenantActivationTask.java [144:249]
public UpdateStatusResponse activateTenant(Tenant tenant, String performedBy, boolean update) {
GetCredentialRequest getCreRe = GetCredentialRequest.newBuilder()
.setOwnerId(tenant.getTenantId())
.setType(Type.CUSTOS)
.build();
CredentialMetadata metadata = credentialStoreService.getCredential(getCreRe);
SetUpTenantRequest setUpTenantRequest = SetUpTenantRequest
.newBuilder()
.setTenantId(tenant.getTenantId())
.setTenantName(tenant.getClientName())
.setAdminFirstname(tenant.getAdminFirstName())
.setAdminLastname(tenant.getAdminLastName())
.setAdminEmail(tenant.getAdminEmail())
.addAllRedirectURIs(tenant.getRedirectUrisList())
.setAdminPassword(tenant.getAdminPassword())
.setAdminUsername(tenant.getAdminUsername())
.setRequesterEmail(tenant.getRequesterEmail())
.setTenantURL(tenant.getClientUri())
.setCustosClientId(metadata.getId())
.build();
SetUpTenantResponse iamResponse;
if (update) {
iamResponse = iamAdminService.updateTenant(setUpTenantRequest);
} else {
iamResponse = iamAdminService.setUPTenant(setUpTenantRequest);
}
CredentialMetadata credentialMetadata = CredentialMetadata
.newBuilder()
.setId(iamResponse.getClientId())
.setSecret(iamResponse.getClientSecret())
.setOwnerId(tenant.getTenantId())
.setType(Type.IAM)
.build();
credentialStoreService.putCredential(credentialMetadata);
String comment = (tenant.getComment() == null || tenant.getComment().trim().isEmpty()) ?
"Created by CUSTOS " : tenant.getComment();
String[] scopes = tenant.getScope() != null ? tenant.getScope().split(" ") : new String[0];
GetCredentialRequest credentialRequest = GetCredentialRequest.newBuilder()
.setOwnerId(tenant.getTenantId())
.setType(Type.CILOGON).build();
String ciLogonRedirectURI = iamAdminService.getIamServerURL() +
"realms" + "/" + tenant.getTenantId() + "/" + "broker" + "/" + "oidc" + "/" + "endpoint";
List<String> arrayList = new ArrayList<>();
arrayList.add(ciLogonRedirectURI);
ClientMetadata.Builder clientMetadataBuilder = ClientMetadata
.newBuilder()
.setTenantId(tenant.getTenantId())
.setTenantName(tenant.getClientName())
.setTenantURI(tenant.getClientUri())
.setComment(comment)
.addAllScope(Arrays.asList(scopes))
.addAllRedirectURIs(arrayList)
.addAllContacts(tenant.getContactsList())
.setPerformedBy(performedBy);
CredentialMetadata creMeta = credentialStoreService.getCredential(credentialRequest);
clientMetadataBuilder.setClientId(creMeta.getId());
if (!update) {
// skip CILOGON client creation for local development
if (!activeProfile.equalsIgnoreCase("local")) {
RegisterClientResponse registerClientResponse = federatedAuthentication.addClient(clientMetadataBuilder.build());
CredentialMetadata credentialMetadataCILogon = CredentialMetadata
.newBuilder()
.setId(registerClientResponse.getClientId())
.setSecret(registerClientResponse.getClientSecret())
.setOwnerId(tenant.getTenantId())
.setType(Type.CILOGON)
.build();
credentialStoreService.putCredential(credentialMetadataCILogon);
ConfigureFederateIDPRequest request = ConfigureFederateIDPRequest
.newBuilder()
.setTenantId(tenant.getTenantId())
.setClientID(registerClientResponse.getClientId())
.setClientSec(registerClientResponse.getClientSecret())
.setScope(tenant.getScope())
.setRequesterEmail(tenant.getRequesterEmail())
.setType(FederatedIDPs.CILOGON)
.build();
iamAdminService.configureFederatedIDP(request);
}
}
org.apache.custos.core.tenant.profile.api.UpdateStatusRequest updateTenantRequest = org.apache.custos.core.tenant.profile.api.UpdateStatusRequest.newBuilder()
.setTenantId(tenant.getTenantId())
.setStatus(TenantStatus.ACTIVE)
.setUpdatedBy(Constants.SYSTEM)
.build();
return tenantProfileService.updateTenantStatus(updateTenantRequest);
}