/*
* Copyright (c) 2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. 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.wso2.carbon.identity.sso.saml.ui.client;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.identity.base.IdentityRuntimeException;
import org.wso2.carbon.identity.sso.saml.stub.IdentitySAMLSSOConfigServiceStub;
import org.wso2.carbon.identity.sso.saml.stub.types.SAMLSSOServiceProviderDTO;
import org.wso2.carbon.identity.sso.saml.stub.types.SAMLSSOServiceProviderInfoDTO;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
public class SAMLSSOConfigServiceClient {
private static Log log = LogFactory.getLog(SAMLSSOConfigServiceClient.class);
private IdentitySAMLSSOConfigServiceStub stub;
public SAMLSSOConfigServiceClient(String cookie, String backendServerURL, ConfigurationContext configCtx)
throws AxisFault {
try {
String serviceURL = backendServerURL + "IdentitySAMLSSOConfigService";
stub = new IdentitySAMLSSOConfigServiceStub(configCtx, serviceURL);
ServiceClient client = stub._getServiceClient();
Options option = client.getOptions();
option.setManageSession(true);
option.setProperty(org.apache.axis2.transport.http.HTTPConstants.COOKIE_STRING, cookie);
} catch (AxisFault ex) {
log.error("Error generating stub for IdentitySAMLSSOConfigService", ex);
throw new AxisFault("Error generating stub for IdentitySAMLSSOConfigService", ex);
}
}
// TODO : This method must return the added service provider data instead
public boolean addServiceProvider(SAMLSSOServiceProviderDTO serviceProviderDTO) throws AxisFault {
boolean status = false;
try {
status = stub.addRPServiceProvider(serviceProviderDTO);
} catch (Exception e) {
log.error("Error adding a new Service Provider", e);
throw new AxisFault(e.getMessage(), e);
}
return status;
}
// TODO : remove bellow method once above is fixed
// this kills performance
public SAMLSSOServiceProviderDTO getServiceProvider(String issuer) throws AxisFault {
try {
SAMLSSOServiceProviderInfoDTO dto = stub.getServiceProviders();
SAMLSSOServiceProviderDTO[] sps = dto.getServiceProviders();
if (sps != null) {
for (SAMLSSOServiceProviderDTO sp : sps) {
if (sp.getIssuer().equals(issuer)) {
return sp;
}
}
}
} catch (Exception e) {
log.error("Error retrieving service provider information", e);
throw new AxisFault(e.getMessage(), e);
}
return null;
}
public SAMLSSOServiceProviderInfoDTO getRegisteredServiceProviders() throws AxisFault {
try {
SAMLSSOServiceProviderInfoDTO spInfo = stub.getServiceProviders();
return spInfo;
} catch (Exception e) {
log.error("Error retrieving service provider information", e);
throw new AxisFault(e.getMessage(), e);
}
}
public List<String> getCertAlias() throws AxisFault {
List<String> certAliasList = new ArrayList<>();
String[] certAliases;
try {
certAliases = stub.getCertAliasOfPrimaryKeyStore();
for (String alias : certAliases) {
certAliasList.add(alias);
}
} catch (Exception e) {
log.error("Error retrieving Cert Aliases", e);
throw new AxisFault(e.getMessage(), e);
}
return certAliasList;
}
public boolean removeServiceProvier(String issuerName) throws AxisFault {
try {
return stub.removeServiceProvider(issuerName);
} catch (Exception e) {
log.error("Error when removing the service provider", e);
throw new AxisFault(e.getMessage(), e);
}
}
public String[] getClaimURIs() throws AxisFault {
String[] claimUris = null;
try {
claimUris = stub.getClaimURIs();
} catch (Exception e) {
log.error("Error when reading claims", e);
throw new AxisFault(e.getMessage(), e);
}
return claimUris;
}
public String[] getSigningAlgorithmUris() throws IdentityRuntimeException {
String[] signingAlgorithmUris;
try {
signingAlgorithmUris = stub.getSigningAlgorithmUris();
} catch (RemoteException e) {
throw IdentityRuntimeException.error(e.getMessage(), e);
}
return signingAlgorithmUris;
}
public String getSigningAlgorithmUriByConfig() throws IdentityRuntimeException {
String signingAlgo;
try {
signingAlgo = stub.getSigningAlgorithmUriByConfig();
} catch (RemoteException e) {
throw IdentityRuntimeException.error(e.getMessage(), e);
}
return signingAlgo;
}
public String[] getDigestAlgorithmURIs() throws IdentityRuntimeException {
String[] digestAlgorithms;
try {
digestAlgorithms = stub.getDigestAlgorithmURIs();
} catch (RemoteException e) {
throw IdentityRuntimeException.error(e.getMessage(), e);
}
return digestAlgorithms;
}
public String getDigestAlgorithmURIByConfig() throws IdentityRuntimeException {
String digestAlgo;
try {
digestAlgo = stub.getDigestAlgorithmURIByConfig();
} catch (RemoteException e) {
throw IdentityRuntimeException.error(e.getMessage(), e);
}
return digestAlgo;
}
}