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