Author: prabath
Date: Mon Dec 17 10:12:16 2007
New Revision: 11281

Log:

added support for OpenID

Modified:
   
branches/solutions/identity/openid-poc/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/mex/MexGetService.java

Modified: 
branches/solutions/identity/openid-poc/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/mex/MexGetService.java
==============================================================================
--- 
branches/solutions/identity/openid-poc/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/mex/MexGetService.java
       (original)
+++ 
branches/solutions/identity/openid-poc/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/mex/MexGetService.java
       Mon Dec 17 10:12:16 2007
@@ -46,164 +46,167 @@
 
 public class MexGetService {
 
-    private static Log log = LogFactory.getLog(MexGetService.class);
+       private static Log log = LogFactory.getLog(MexGetService.class);
 
-    private static final String IDENTITY_LN = "Identity";
+       private static final String IDENTITY_LN = "Identity";
 
-    private static final String KEY_INFO_LN = "KeyInfo";
+       private static final String KEY_INFO_LN = "KeyInfo";
 
-    private static final String X509DATA_LN = "X509Data";
+       private static final String X509DATA_LN = "X509Data";
 
-    private static final String X509CERT_LN = "X509Certificate";
-
-    private static final String WSA_PREFIX = "a"; // workaround for oM bug
-
-    public OMElement get(OMElement element) throws AxisFault {
-        OMElement elem = null;
-
-        if (log.isDebugEnabled()) {
-            log.debug("begin Mex get");
-        }
-
-        MessageContext msgCtx = MessageContext.getCurrentMessageContext();
-        String service = msgCtx.getAxisService().getName();
-
-        ConfigurationContext cfgContext = msgCtx.getConfigurationContext();
-
-        ServiceAdmin admin = new ServiceAdmin(cfgContext);
-        String stsName = null;
-        if (service.equals(IdentityProviderConstants.SERVICE_NAME_MEX_UT)) {
-            stsName = IdentityProviderConstants.SERVICE_NAME_STS_UT;
-        } else if (service
-                .equals(IdentityProviderConstants.SERVICE_NAME_MEX_IC)) {
-            stsName = IdentityProviderConstants.SERVICE_NAME_STS_IC;
-        } else if (service
-                .equals(IdentityProviderConstants.SERVICE_NAME_MEX_UT_SYMM)) {
-            stsName = IdentityProviderConstants.SERVICE_NAME_STS_UT_SYMM;
-        } else if (service
-                .equals(IdentityProviderConstants.SERVICE_NAME_MEX_IC_SYMM)) {
-            stsName = IdentityProviderConstants.SERVICE_NAME_STS_IC_SYMM;
-        } else {
-            throw new AxisFault("Invalid Mex Service");
-        }
-
-        OMElement retElement = admin.getWSDL(stsName).getFirstElement();
-        OMElement defElement = retElement.getFirstChildWithName(new QName(
-                Constants.NS_URI_WSDL11, "definitions"));
-        setIdentityAddressing(defElement);
-        MetadataSection section = new MetadataSection();
-        section.setDialect("http://schemas.xmlsoap.org/wsdl/";);
-        section.setinlineData(defElement);
-        section.setIdentifier(RahasConstants.WST_NS_05_02);
-
-        List lst = new ArrayList();
-        lst.add(section);
-
-        Metadata mdata = new Metadata();
-        mdata.setMetadatSections(lst);
-
-        elem = mdata.toOM();
-
-        if (log.isDebugEnabled()) {
-            log.debug("Mex processing DONE -> RESPONSE : " + elem);
-        }
-
-        return elem;
-    }
-
-    private void setIdentityAddressing(OMElement definitionElement)
-            throws AxisFault {
-        if (log.isDebugEnabled()) {
-            log.debug("setIdentityAddressing");
-        }
-
-        Iterator ite = definitionElement.getChildrenWithName(new QName(
-                Constants.NS_URI_WSDL11, "service"));
-        OMElement serviceElem = null;
-        if (ite.hasNext()) {
-            serviceElem = (OMElement) ite.next();
-        } else {
-            throw new AxisFault("Cannot find element Nampsace :"
-                    + Constants.NS_URI_WSDL11 + " || Local Name : service");
-        }
-
-        OMFactory factory = definitionElement.getOMFactory();
-        OMNamespace wsaNs = factory.createOMNamespace(
-                AddressingConstants.Final.WSA_NAMESPACE, WSA_PREFIX);
-        definitionElement.declareNamespace(wsaNs);
-
-        String value = IdentityProviderConstants.SERVICE_NAME_STS_UT;
-        X509Certificate cert = KeyUtil.getCertificateToIncludeInMex(value);
-
-        if (cert == null) {
-            throw new AxisFault("STS's certificate is null");
-        }
-
-        Iterator portIte = serviceElem.getChildElements();
-        while (portIte.hasNext()) {
-            OMElement portElem = (OMElement) portIte.next();
-            if ("port".equals(portElem.getLocalName())) {
-                addIIdentityAddressing(portElem, cert);
-            }
-        }
-    }
-
-    /**
-     * This method adds EndPointReference element into Port element of the WSDL
-     */
-    private void addIIdentityAddressing(OMElement portElem, X509Certificate 
cert)
-            throws AxisFault {
-
-        if (log.isDebugEnabled()) {
-            log.debug("addIIdentityAddressing - port Element found");
-        }
-
-        try {
-
-            Iterator ite = portElem.getChildElements();
-            String address = null;
-            while (ite.hasNext()) {
-                OMElement elem = (OMElement) ite.next();
-                if ("address".equals(elem.getLocalName())) {
-                    address = elem.getAttributeValue(new QName("", 
"location"));
-                    break; // only one address element
-                }
-            }
-
-            if (address == null) {
-                throw new AxisFault("Address inside Port Element is null");
-            }
-
-            EndpointReference ref = new EndpointReference(address);
-
-            OMFactory factory = portElem.getOMFactory(); // this is an OM bug
-            // OMFactory factory = OMAbstractFactory.getOMFactory();
-            OMElement identityElem = factory.createOMElement(new QName(
-                    IdentityConstants.IDENTITY_ADDRESSING_NS, IDENTITY_LN));
-
-            OMNamespace ns = factory.createOMNamespace(XMLSignature.XMLNS,
-                    "dsig");
-            OMElement keyInfoElem = factory.createOMElement(KEY_INFO_LN, ns);
-            OMElement X509DataElem = factory.createOMElement(X509DATA_LN, ns);
-            OMElement X509CertElem = factory.createOMElement(X509CERT_LN, ns);
-
-            byte[] byteArray = cert.getEncoded();
-            X509CertElem.setText(Base64.encode(byteArray));
-            X509DataElem.addChild(X509CertElem);
-            keyInfoElem.addChild(X509DataElem);
-            identityElem.addChild(keyInfoElem);
-            ArrayList lst = new ArrayList();
-            lst.add(identityElem);
-            ref.setExtensibleElements(lst);
-
-            QName qname = new QName(AddressingConstants.Final.WSA_NAMESPACE,
-                    "EndpointReference", WSA_PREFIX);
-            OMElement refElem = EndpointReferenceHelper.toOM(factory, ref,
-                    qname, AddressingConstants.Final.WSA_NAMESPACE);
-            portElem.addChild(refElem);
-
-        } catch (Exception e) {
-            throw new AxisFault(e.getMessage(), e);
-        }
-    }
+       private static final String X509CERT_LN = "X509Certificate";
+
+       private static final String WSA_PREFIX = "a"; // workaround for oM bug
+
+       public OMElement get(OMElement element) throws AxisFault {
+               OMElement elem = null;
+
+               if (log.isDebugEnabled()) {
+                       log.debug("begin Mex get");
+               }
+
+               MessageContext msgCtx = 
MessageContext.getCurrentMessageContext();
+               String service = msgCtx.getAxisService().getName();
+
+               ConfigurationContext cfgContext = 
msgCtx.getConfigurationContext();
+
+               ServiceAdmin admin = new ServiceAdmin(cfgContext);
+               String stsName = null;
+               if 
(service.equals(IdentityProviderConstants.SERVICE_NAME_MEX_UT)) {
+                       stsName = IdentityProviderConstants.SERVICE_NAME_STS_UT;
+               } else if (service
+                               
.equals(IdentityProviderConstants.SERVICE_NAME_MEX_IC)) {
+                       stsName = IdentityProviderConstants.SERVICE_NAME_STS_IC;
+               } else if (service
+                               
.equals(IdentityProviderConstants.SERVICE_NAME_MEX_UT_SYMM)) {
+                       stsName = 
IdentityProviderConstants.SERVICE_NAME_STS_UT_SYMM;
+               } else if (service
+                               
.equals(IdentityProviderConstants.SERVICE_NAME_MEX_IC_SYMM)) {
+                       stsName = 
IdentityProviderConstants.SERVICE_NAME_STS_IC_SYMM;
+               } else if (service
+                               
.equals(IdentityProviderConstants.SERVICE_NAME_MEX_OPENID)) {
+                       stsName = 
IdentityProviderConstants.SERVICE_NAME_STS_OPENID;
+               } else {
+                       throw new AxisFault("Invalid Mex Service");
+               }
+
+               OMElement retElement = admin.getWSDL(stsName).getFirstElement();
+               OMElement defElement = retElement.getFirstChildWithName(new 
QName(
+                               Constants.NS_URI_WSDL11, "definitions"));
+               setIdentityAddressing(defElement);
+               MetadataSection section = new MetadataSection();
+               section.setDialect("http://schemas.xmlsoap.org/wsdl/";);
+               section.setinlineData(defElement);
+               section.setIdentifier(RahasConstants.WST_NS_05_02);
+
+               List lst = new ArrayList();
+               lst.add(section);
+
+               Metadata mdata = new Metadata();
+               mdata.setMetadatSections(lst);
+
+               elem = mdata.toOM();
+
+               if (log.isDebugEnabled()) {
+                       log.debug("Mex processing DONE -> RESPONSE : " + elem);
+               }
+
+               return elem;
+       }
+
+       private void setIdentityAddressing(OMElement definitionElement)
+                       throws AxisFault {
+               if (log.isDebugEnabled()) {
+                       log.debug("setIdentityAddressing");
+               }
+
+               Iterator ite = definitionElement.getChildrenWithName(new QName(
+                               Constants.NS_URI_WSDL11, "service"));
+               OMElement serviceElem = null;
+               if (ite.hasNext()) {
+                       serviceElem = (OMElement) ite.next();
+               } else {
+                       throw new AxisFault("Cannot find element Nampsace :"
+                                       + Constants.NS_URI_WSDL11 + " || Local 
Name : service");
+               }
+
+               OMFactory factory = definitionElement.getOMFactory();
+               OMNamespace wsaNs = factory.createOMNamespace(
+                               AddressingConstants.Final.WSA_NAMESPACE, 
WSA_PREFIX);
+               definitionElement.declareNamespace(wsaNs);
+
+               String value = IdentityProviderConstants.SERVICE_NAME_STS_UT;
+               X509Certificate cert = 
KeyUtil.getCertificateToIncludeInMex(value);
+
+               if (cert == null) {
+                       throw new AxisFault("STS's certificate is null");
+               }
+
+               Iterator portIte = serviceElem.getChildElements();
+               while (portIte.hasNext()) {
+                       OMElement portElem = (OMElement) portIte.next();
+                       if ("port".equals(portElem.getLocalName())) {
+                               addIIdentityAddressing(portElem, cert);
+                       }
+               }
+       }
+
+       /**
+        * This method adds EndPointReference element into Port element of the 
WSDL
+        */
+       private void addIIdentityAddressing(OMElement portElem, X509Certificate 
cert)
+                       throws AxisFault {
+
+               if (log.isDebugEnabled()) {
+                       log.debug("addIIdentityAddressing - port Element 
found");
+               }
+
+               try {
+
+                       Iterator ite = portElem.getChildElements();
+                       String address = null;
+                       while (ite.hasNext()) {
+                               OMElement elem = (OMElement) ite.next();
+                               if ("address".equals(elem.getLocalName())) {
+                                       address = elem.getAttributeValue(new 
QName("", "location"));
+                                       break; // only one address element
+                               }
+                       }
+
+                       if (address == null) {
+                               throw new AxisFault("Address inside Port 
Element is null");
+                       }
+
+                       EndpointReference ref = new EndpointReference(address);
+
+                       OMFactory factory = portElem.getOMFactory(); // this is 
an OM bug
+                       // OMFactory factory = OMAbstractFactory.getOMFactory();
+                       OMElement identityElem = factory.createOMElement(new 
QName(
+                                       
IdentityConstants.IDENTITY_ADDRESSING_NS, IDENTITY_LN));
+
+                       OMNamespace ns = 
factory.createOMNamespace(XMLSignature.XMLNS,
+                                       "dsig");
+                       OMElement keyInfoElem = 
factory.createOMElement(KEY_INFO_LN, ns);
+                       OMElement X509DataElem = 
factory.createOMElement(X509DATA_LN, ns);
+                       OMElement X509CertElem = 
factory.createOMElement(X509CERT_LN, ns);
+
+                       byte[] byteArray = cert.getEncoded();
+                       X509CertElem.setText(Base64.encode(byteArray));
+                       X509DataElem.addChild(X509CertElem);
+                       keyInfoElem.addChild(X509DataElem);
+                       identityElem.addChild(keyInfoElem);
+                       ArrayList lst = new ArrayList();
+                       lst.add(identityElem);
+                       ref.setExtensibleElements(lst);
+
+                       QName qname = new 
QName(AddressingConstants.Final.WSA_NAMESPACE,
+                                       "EndpointReference", WSA_PREFIX);
+                       OMElement refElem = 
EndpointReferenceHelper.toOM(factory, ref,
+                                       qname, 
AddressingConstants.Final.WSA_NAMESPACE);
+                       portElem.addChild(refElem);
+
+               } catch (Exception e) {
+                       throw new AxisFault(e.getMessage(), e);
+               }
+       }
 }

_______________________________________________
Identity-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/identity-dev

Reply via email to