TrustAuthorityClientImpl.java revision 4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1c
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk/**
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk *
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * Copyright (c) 2007 Sun Microsystems Inc. All Rights Reserved
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk *
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * The contents of this file are subject to the terms
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * of the Common Development and Distribution License
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * (the License). You may not use this file except in
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * compliance with the License.
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk *
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * You can obtain a copy of the License at
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * https://opensso.dev.java.net/public/CDDLv1.0.html or
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * opensso/legal/CDDLv1.0.txt
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * See the License for the specific language governing
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * permission and limitations under the License.
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk *
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * When distributing Covered Code, include this CDDL
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * Header Notice in each file and include the License file
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * at opensso/legal/CDDLv1.0.txt.
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * If applicable, add the following below the CDDL Header,
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * with the fields enclosed by brackets [] replaced by
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * your own identifying information:
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * "Portions Copyrighted [year] [name of copyright owner]"
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk *
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * $Id: TrustAuthorityClientImpl.java,v 1.8 2008/08/31 15:50:03 mrudul_uchil Exp $
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk *
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk */
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkpackage com.sun.identity.wss.sts;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkimport org.w3c.dom.Element;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkimport com.sun.identity.shared.debug.Debug;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkimport com.sun.xml.ws.security.Token;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkimport com.sun.xml.ws.api.security.trust.client.IssuedTokenManager;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkimport com.sun.xml.ws.security.IssuedTokenContext;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkimport com.sun.identity.common.SystemConfigurationUtil;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkimport com.sun.identity.wss.security.SecurityToken;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk/**
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * The class <code>TrustAuthorityClientImpl</code> is the implementation of
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * <code>TrustAuthorityClient</code> class.
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk */
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenkpublic class TrustAuthorityClientImpl {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk private static Debug debug = STSUtils.debug;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk private static Class clientTokenClass;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk /** Creates a new instance of TrustAuthorityClientImpl */
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk public TrustAuthorityClientImpl() {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk /**
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * Returns security token element obtained from Security Token Service.
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk */
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk public Element getSTSTokenElement(String wspEndPoint,
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk String stsEndpoint,
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk String stsMexAddress,
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk Object credential,
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk String keyType,
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk String tokenType,
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk String version)
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk throws FAMSTSException {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk String protocolNS = STSConstants.WST13_NAMESPACE;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk if(STSConstants.WST_VERSION_10.equals(version)) {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk protocolNS = STSConstants.WST10_NAMESPACE;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk STSClientConfiguration config =
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk new STSClientConfiguration(protocolNS, stsEndpoint, stsMexAddress);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk config.setKeyType(keyType);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk if(tokenType != null) {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk config.setTokenType(tokenType);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk if(credential != null) {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk config.setOBOToken(getClientUserToken(credential));
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk try {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk IssuedTokenManager manager = IssuedTokenManager.getInstance();
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk IssuedTokenContext ctx =
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk manager.createIssuedTokenContext(config,wspEndPoint);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk manager.getIssuedToken(ctx);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk Token issuedToken = ctx.getSecurityToken();
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk Element element = (Element)issuedToken.getTokenValue();
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk return element;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk } catch (Exception ex) {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk debug.error("TrustAuthorityClientImpl.getSTSToken:: Failed in" +
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk "obtainining STS Token Element: ", ex);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk throw new FAMSTSException(
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk STSUtils.bundle.getString("wstrustexception"));
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk /**
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk * Returns Client's or End user's token to be converted to Security token.
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk */
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk private Token getClientUserToken(Object credential)
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk throws FAMSTSException {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk if (clientTokenClass == null) {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk String className = SystemConfigurationUtil.getProperty(
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk STSConstants.STS_CLIENT_USER_TOKEN_PLUGIN,
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk "com.sun.identity.wss.sts.STSClientUserToken");
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk try {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk clientTokenClass =
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk (Thread.currentThread().getContextClassLoader()).
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk loadClass(className);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk } catch (Exception ex) {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk debug.error("TrustAuthorityClientImpl.getClientUserToken:"
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk + "Failed in obtaining class", ex);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk throw new FAMSTSException(
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk STSUtils.bundle.getString("initializationFailed"));
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk try {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk ClientUserToken userToken =
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk (ClientUserToken) clientTokenClass.newInstance();
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk userToken.init(credential);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk if(debug.messageEnabled()) {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk debug.message("TrustAuthorityClientImpl:getClientUserToken: " +
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk "Client User Token : " + userToken);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk return userToken;
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk } catch (Exception ex) {
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk debug.error("TrustAuthorityClientImpl.getClientUserToken: " +
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk "Failed in initialization", ex);
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk throw new FAMSTSException(
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk STSUtils.bundle.getString("usertokeninitfailed"));
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk }
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk}
dbcf55756e293292dfbfbb75fe317dd094b0585fjeff.schenk