a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: DiscoveryService.java,v 1.5 2008/12/05 00:18:30 exu Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.common.LogUtil;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.common.Status;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.common.wsse.BinarySecurityToken;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interfaces.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.plugins.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.common.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.jaxb.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Handles Liberty discovery service protocol.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic final class DiscoveryService implements RequestHandler {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Default constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("In DiscoveryService constructor.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Processes request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request in coming request <code>Message</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return response <code>Message</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception Exception if an error occurred during the process.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message processRequest(Message request) throws Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoService.processRequest: SOAP message"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " didn't contain one SOAP body.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new Exception(DiscoUtils.bundle.getString("oneBody"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String authnMech = request.getAuthenticationMechanism();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.processRequest: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoServiceManager.getSupportedAuthenticationMechanisms();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((authnMechs == null) || (!authnMechs.contains(authnMech))) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoService.processRequest: Authentication"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Mechanism used is not supported by this service:"+authnMech);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new Exception(DiscoUtils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "authnMechNotSupported"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DiscoveryException(sbe.getMessage());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (DiscoServiceManager.useResponseAuthentication() ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnMech.equals(Message.CLIENT_TLS_BEARER)) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnMech.equals(Message.NULL_BEARER_WSF11)) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnMech.equals(Message.TLS_BEARER_WSF11)) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnMech.equals(Message.CLIENT_TLS_X509_WSF11)) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnMech.equals(Message.CLIENT_TLS_SAML_WSF11)) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (authnMech.equals(Message.CLIENT_TLS_BEARER_WSF11)))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BinarySecurityToken binaryToken = stm.getX509CertificateToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster binaryToken.setWSFVersion(request.getWSFVersion());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster message.setWSFVersion(request.getWSFVersion());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoveryService.processRequest:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "couldn't generate Message with X509 token: ", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoveryService.processRequest:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "couldn't generate Message: ", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.convertJAXBToElement(update((ModifyType) body,request)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoService.processRequest: SOAPBody "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "is not a Disco message.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new Exception(DiscoUtils.bundle.getString("bodyNotDisco"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //create other header if needed
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //message.setOtherHeader()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Finds the resource offerings requested in the query.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param query The incoming Discovery Query request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param message soapbinding message that contains info regarding sending
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * identities that can be used in access control
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return org.w3c.dom.Element which is the QueryResponse of this operation.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Inside this QueryResponse, Credentials may be included, and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * ResourceID may be encrypted if required.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster com.sun.identity.liberty.ws.disco.jaxb.QueryType query,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster com.sun.identity.liberty.ws.soapbinding.Message message)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Status status = new Status(DiscoConstants.DISCO_NS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QueryResponse resp = new QueryResponse(status);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID = DiscoServiceManager.getDiscoProviderID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster resourceID = getResourceID(query.getEncryptedResourceID(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isB2E = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster resourceID.equals(DiscoConstants.IMPLIED_RESOURCE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoveryService.lookup: in B2E case");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // find the disco ResourceIDMapper from config
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ResourceIDMapper idMapper = DiscoServiceManager.getResourceIDMapper(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idMapper = DiscoServiceManager.getDefaultResourceIDMapper();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userDN = idMapper.getUserID(providerID, resourceID, message);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoService.lookup: couldn't find the "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "user associated with the resourceID:" + resourceID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoService.lookup:", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.getDiscoMarshaller().marshal(resp, doc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.lookup: userDN="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster entryHandler = DiscoServiceManager.getDiscoEntryHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster entryHandler = DiscoServiceManager.getGlobalEntryHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "DiscoService.lookup: null DiscoEntryHandler.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Map discoEntriesMap = entryHandler.getDiscoEntries(userDN,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.lookup: lookup "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.error(Level.INFO,LogUtil.DS_LOOKUP_FAILURE,data);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.lookup: find " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster results.size() + "ResourceOfferings for userDN:" + userDN);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (DiscoServiceManager.needPolicyEvalLookup()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.lookup:needPolicyEval.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authorizer = DiscoServiceManager.getAuthorizer();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.error(Level.INFO,LogUtil.DS_LOOKUP_FAILURE,data);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnMap = DiscoUtils.checkPolicyAndHandleDirectives(userDN,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster message, results, authorizer,null,null, message.getToken());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List offerings = (List) returnMap.get(DiscoUtils.OFFERINGS);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.lookup: after policy"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " check and directive handling, NoResults for:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.error(Level.INFO,LogUtil.DS_LOOKUP_FAILURE,data);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("after resp.getresoff.addall");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List credentials = (List) returnMap.get(DiscoUtils.CREDENTIALS);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((credentials != null) && (!credentials.isEmpty())) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.lookup: has cred.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Updates resource offerings.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param modify The incoming Discovery Update request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param message soapbinding message that contains info regarding sending
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * identities that can be used in access control
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return ModifyResponseType which includes Status of the operation.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private com.sun.identity.liberty.ws.disco.jaxb.ModifyResponseElement update(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster com.sun.identity.liberty.ws.disco.jaxb.ModifyType modify,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster com.sun.identity.liberty.ws.soapbinding.Message message)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.getDiscoFactory().createModifyResponseElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster status = DiscoUtils.getDiscoFactory().createStatusType();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoService.update: couldn't form "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "ModifyResponse.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID = DiscoServiceManager.getDiscoProviderID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster resourceID = getResourceID(modify.getEncryptedResourceID(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isB2E = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster resourceID.equals(DiscoConstants.IMPLIED_RESOURCE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoveryService.lookup: in B2E case");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // find the disco ResourceIDMapper from config
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ResourceIDMapper idMapper = DiscoServiceManager.getResourceIDMapper(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idMapper = DiscoServiceManager.getDefaultResourceIDMapper();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userDN = idMapper.getUserID(providerID, resourceID, message);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster logMsg = DiscoUtils.bundle.getString("messageID") + "="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + message.getCorrelationHeader().getMessageID() + "."
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + DiscoUtils.bundle.getString("providerID") + "="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + DiscoUtils.bundle.getString("securityMechID") + "="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + DiscoUtils.bundle.getString("resourceOfferingID")
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + DiscoUtils.bundle.getString("operation") + "="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoService.update: couldn't find user "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // find the DiscoEntryHandler from config
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster entryHandler = DiscoServiceManager.getDiscoEntryHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster entryHandler = DiscoServiceManager.getGlobalEntryHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // get flag if policy check for modify from config
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (DiscoServiceManager.needPolicyEvalUpdate()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.lookup: needPolicyEval.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!isUpdateAllowed(userDN, message, modify.getRemoveEntry(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // now do the modify
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Map results = entryHandler.modifyDiscoEntries(userDN,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster modify.getRemoveEntry(), modify.getInsertEntry());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String statusCode = (String) results.get(DiscoEntryHandler.STATUS_CODE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (statusCode.equals(DiscoConstants.STATUS_OK)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.update: modified "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "DiscoEntries through DiscoEntryHandler successfully.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((entryIds != null) && (entryIds.size() != 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoService.update: couldn't modify "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "DiscoEntries through DiscoEntryHandler.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean isUpdateAllowed(String userDN, Message message,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List removes, List inserts, DiscoEntryHandler entryHandler,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("DiscoService.isUpdateAllowed.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // policy eval for each removes
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((removes != null) && (removes.size() != 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Map entryMap = entryHandler.getDiscoEntries(userDN, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (i.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster entryID = ((RemoveEntryType) i.next()).getEntryID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoveryService.isUpdateAllowed: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!authorizer.isAuthorized(message.getToken(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoveryService.isUpdateAllowed: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "WSC is not authorized to remove entry: " + entryID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // policy eval for each inserts
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((inserts != null) && (inserts.size() != 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (j.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!authorizer.isAuthorized(message.getToken(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ((InsertEntryType) j.next()).getResourceOffering(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoveryService.isUpdateAllowed: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "WSC is not authorized to insert entry.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String getResourceID(EncryptedResourceIDType encryptResID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((encryptResID == null) || (providerID == null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster EncryptedResourceID eri = new EncryptedResourceID(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.convertJAXBToElement(encryptResID, false));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ResourceID ri = EncryptedResourceID.getDecryptedResourceID(eri,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.error("DiscoveryService.getResourceID: Exception:",