Author: shankar Date: Tue Dec 15 08:07:28 2009 New Revision: 890680 URL: http://svn.apache.org/viewvc?rev=890680&view=rev Log: Changing namespaces
Added: incubator/stonehenge/trunk/stocktrader/wsas/identity/src/ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/StonehengeAttributeService.java incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/internal/ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/internal/CustomAttributeServiceComponent.java Removed: incubator/stonehenge/trunk/stocktrader/wsas/identity/lib/ incubator/stonehenge/trunk/stocktrader/wsas/identity/org.wso2.carbon.identity.stonehenge.attributeservice/ Modified: incubator/stonehenge/trunk/stocktrader/wsas/identity/pom.xml Modified: incubator/stonehenge/trunk/stocktrader/wsas/identity/pom.xml URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/identity/pom.xml?rev=890680&r1=890679&r2=890680&view=diff ============================================================================== --- incubator/stonehenge/trunk/stocktrader/wsas/identity/pom.xml (original) +++ incubator/stonehenge/trunk/stocktrader/wsas/identity/pom.xml Tue Dec 15 08:07:28 2009 @@ -1,104 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF 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. +--> + <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>org.wso2.carbon.identity.stonehenge</groupId> - <artifactId>identity-stonehenge-parent</artifactId> - <packaging>pom</packaging> - <version>2.0.0.SNAPSHOT</version> - <name>WSO2 Identity Server Stonehenge - Parent Maven Module</name> - <description>identity-stonehenge-parent</description> - <url>http://wso2.org</url> - - <repositories> - <repository> - <id>wso2-maven2-repository</id> - <url>http://dist.wso2.org/maven2</url> - </repository> - <repository> - <id>wso2-maven2-repository-snapshot</id> - <url>http://dist.wso2.org/snapshots/maven2</url> - </repository> - <repository> - <id>apache-Incubating-repo</id> - <name>Maven Incubating Repository</name> - <url>http://people.apache.org/repo/m2-incubating-repository</url> - </repository> - <repository> - <id>apache-maven2-repo</id> - <name>Apache Maven2 Repository</name> - <url>http://repo1.maven.org/maven2/</url> - </repository> - </repositories> - - <pluginRepositories> - <pluginRepository> - <id>wso2-maven2-repository</id> - <url>http://dist.wso2.org/maven2</url> - </pluginRepository> - </pluginRepositories> + <groupId>org.apache.stonehenge.stocktrader.identity</groupId> + <artifactId>attributeservice</artifactId> + <!--packaging>bundle</packaging>--> + <version>m2</version> + <name>WSO2 Identity Attribute Service for Stonehenge</name> <build> - <pluginManagement> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-scr-plugin</artifactId> - <version>1.0.10</version> - <executions> - <execution> - <id>generate-scr-scrdescriptor</id> - <goals> - <goal>scr</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> + <version>2.0</version> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> + <!--plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-scr-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <version>1.4.0</version> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> + <Bundle-Name>${pom.artifactId}</Bundle-Name> + <Private-Package>org.wso2.carbon.identity.stonehenge.attributeservice.internal</Private-Package> + <Export-Package> + org.wso2.carbon.identity.stonehenge.attributeservice, + </Export-Package> + <Import-Package> + !org.wso2.carbon.identity.stonehenge.attributeservice, + org.wso2.carbon.identity.provider.*, + org.osgi.framework, + org.apache.axis2.*; version="${axis2.osgi.version.range}", + </Import-Package> + <DynamicImport-Package>*</DynamicImport-Package> + </instructions> + </configuration> + </plugin--> </plugins> </build> - <modules> - <module>org.wso2.carbon.identity.stonehenge.attributeservice</module> - </modules> - - <properties> - <wso2carbon.version>${pom.version}</wso2carbon.version> - <server.name>WSO2Carbon</server.name> - <server.version>${pom.version}</server.version> - <axis2.transport.version>1.0.0.wso2v1</axis2.transport.version> - <axiom.version>1.2.7</axiom.version> - <tomcat.version>6.0.16</tomcat.version> - <jakarta.taglib.version>1.1.2</jakarta.taglib.version> - <sourceforge.ajaxtags.version>1.3.0.beta-rc7</sourceforge.ajaxtags.version> - <addressing.version>1.5</addressing.version> - <rampart.mar.version>1.41</rampart.mar.version> - <axis2.osgi.version>1.4.1.wso2</axis2.osgi.version> - <wss4j.version>1.5.4</wss4j.version> - <derby.version>10.2.2.0</derby.version> - <neethi.version>2.0.4</neethi.version> - <stax.version>1.0.1</stax.version> - <spring.version>2.5.1</spring.version> - <h2.engine.version>1.1.112</h2.engine.version> - <wso2.h2.orbit.version>${h2.engine.version}.wso2v1</wso2.h2.orbit.version> - - <axis2.version>1.5-wso2v1</axis2.version> - <axis2.orbit.version>1.5.0.wso2v1</axis2.orbit.version> - <axis2.osgi.version.range>[1.5.0.wso2, 1.6.0)</axis2.osgi.version.range> - <axiom.osgi.version.range>[1.2.8, 1.3.0)</axiom.osgi.version.range> - <neethi.osgi.version.range>[2.0.4, 3.0.0)</neethi.osgi.version.range> - </properties> + <dependencies> + + <dependency> + <groupId>opensaml.wso2</groupId> + <artifactId>opensaml2</artifactId> + <version>2.0.1.alpha1-wso2v1</version> + </dependency> + + <dependency> + <groupId>org.apache.ws.commons.axiom.wso2</groupId> + <artifactId>axiom</artifactId> + <version>1.2.9.wso2v1-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.axis2.wso2</groupId> + <artifactId>axis2</artifactId> + <version>1.5.0.wso2v3</version> + </dependency> + + <dependency> + <groupId>org.wso2.carbon</groupId> + <artifactId>org.wso2.carbon.security.rahas</artifactId> + <version>2.0.1</version> + </dependency> + + <dependency> + <groupId>org.wso2.carbon</groupId> + <artifactId>org.wso2.carbon.identity.provider</artifactId> + <version>2.0.0</version> + </dependency> + </dependencies> </project> Added: incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/StonehengeAttributeService.java URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/StonehengeAttributeService.java?rev=890680&view=auto ============================================================================== --- incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/StonehengeAttributeService.java (added) +++ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/StonehengeAttributeService.java Tue Dec 15 08:07:28 2009 @@ -0,0 +1,113 @@ +package org.apache.stonehenge.stocktrader.attributeservice; + +import java.util.Arrays; + +import javax.xml.namespace.QName; + +import org.apache.axiom.om.OMElement; +import org.apache.axiom.soap.SOAPEnvelope; +import org.apache.axiom.soap.SOAPHeader; +import org.apache.axiom.soap.SOAPHeaderBlock; +import org.apache.axis2.context.MessageContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.rahas.RahasConstants; +import org.apache.rahas.RahasData; +import org.apache.rahas.impl.util.SAMLAttributeCallback; +import org.opensaml.Configuration; +import org.opensaml.SAMLAttribute; +import org.opensaml.SAMLException; +import org.opensaml.common.SAMLObjectBuilder; +import org.opensaml.saml2.core.Attribute; +import org.opensaml.saml2.core.AttributeValue; +import org.opensaml.xml.XMLObjectBuilderFactory; +import org.opensaml.xml.schema.XSString; +import org.opensaml.xml.schema.impl.XSStringBuilder; +import org.wso2.carbon.identity.provider.IdentityAttributeService; + +public class StonehengeAttributeService implements IdentityAttributeService { + + private static final String WSSE_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; + private static final String WSSE_LN = "Security"; + private static final String USERNAME_TOKEN_LN = "UsernameToken"; + private static final String PASSWORD_LN = "Password"; + private static final QName SEC_HEADER = new QName(WSSE_NS, WSSE_LN); + private static final QName USERNAME_TOKEN = new QName(WSSE_NS, USERNAME_TOKEN_LN); + private static final QName PASSWORD = new QName(WSSE_NS, PASSWORD_LN); + + private static Log log = LogFactory.getLog(StonehengeAttributeService.class); + + public void handle(SAMLAttributeCallback attrCallback) throws SAMLException { + log.info("StonehengeAttributeService being called"); + RahasData data = null; + String userIdentifier = null; + String password = null; + + try { + data = attrCallback.getData(); + + // we're cheating and hardcoding the ppid value. + // TODO: take it from the database + if (RahasConstants.TOK_TYPE_SAML_20.equals(data.getTokenType())) { + attrCallback.addAttributes(getSAML2Attribute("privatepersonalidentifier", "08C648FA-5C0E-4092-ABF8-E71785373CE8", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims")); + } else { + SAMLAttribute attribute = null; + attribute = new SAMLAttribute("privatepersonalidentifier", + "http://schemas.xmlsoap.org/ws/2005/05/identity/claims", null, -1, Arrays + .asList(new String[]{"uid:0"})); + attrCallback.addAttributes(attribute); + } + } catch (Exception e) { + log.error("Error occuerd while populating claim data", e); + } + } + + private Attribute getSAML2Attribute(String name, String value, String namespace) { + XMLObjectBuilderFactory builderFactory = null; + SAMLObjectBuilder<Attribute> attrBuilder = null; + Attribute attribute = null; + XSStringBuilder attributeValueBuilder = null; + XSString stringValue = null; + + builderFactory = Configuration.getBuilderFactory(); + attrBuilder = (SAMLObjectBuilder<Attribute>) builderFactory + .getBuilder(Attribute.DEFAULT_ELEMENT_NAME); + attribute = attrBuilder.buildObject(); + attribute.setName(name); + attribute.setNameFormat(namespace); + + attributeValueBuilder = (XSStringBuilder) builderFactory.getBuilder(XSString.TYPE_NAME); + stringValue = attributeValueBuilder.buildObject(AttributeValue.DEFAULT_ELEMENT_NAME, + XSString.TYPE_NAME); + stringValue.setValue(value); + attribute.getAttributeValues().add(stringValue); + return attribute; + } + + private String getUserCredentials(SOAPEnvelope envelope) { + SOAPHeaderBlock secHeader = null; + OMElement usernameToken = null; + + secHeader = getSecHeader(envelope); + if (secHeader == null) { + return null; + } + + usernameToken = secHeader.getFirstChildWithName(USERNAME_TOKEN); + if (usernameToken != null) { + OMElement userElem = usernameToken.getFirstChildWithName(PASSWORD); + if (userElem != null) { + return userElem.getText().trim(); + } + } + return null; + } + + private SOAPHeaderBlock getSecHeader(SOAPEnvelope envelope) { + SOAPHeader header = envelope.getHeader(); + if (header != null) { + return (SOAPHeaderBlock) header.getFirstChildWithName(SEC_HEADER); + } + return null; + } +} Added: incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/internal/CustomAttributeServiceComponent.java URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/internal/CustomAttributeServiceComponent.java?rev=890680&view=auto ============================================================================== --- incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/internal/CustomAttributeServiceComponent.java (added) +++ incubator/stonehenge/trunk/stocktrader/wsas/identity/src/org/apache/stonehenge/stocktrader/attributeservice/internal/CustomAttributeServiceComponent.java Tue Dec 15 08:07:28 2009 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2006, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * Licensed 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.apache.stonehenge.stocktrader.attributeservice.internal; + +import org.wso2.carbon.identity.provider.IdentityAttributeService; +import org.wso2.carbon.identity.stonehenge.attributeservice.StonehengeAttributeService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.osgi.service.component.ComponentContext; + +import java.util.Properties; + +/** + * @scr.component name="org.wso2.carbon.identity.samples.attributeservice" immediate="true" + */ +public class CustomAttributeServiceComponent { + private static Log log = LogFactory.getLog(CustomAttributeServiceComponent.class); + + public CustomAttributeServiceComponent() { + } + + protected void activate(ComponentContext ctxt) { + Properties props; + + try { + // This should ideally contain properties of MailTransportService as + // a collection of key/value pair. Here we do not require to add any elements. + props = new Properties(); + // Register the StonehengeAttributeService under IdentityAttributeService interface. + ctxt.getBundleContext().registerService(IdentityAttributeService.class.getName(), + new StonehengeAttributeService(), props); + + if (log.isDebugEnabled()) { + log.debug("Successfully registered the StonehengeAttributeService service"); + } + } catch (Throwable e) { + String message = null; + message = "Error while activating the org.wso2.carbon.identity.stonehenge.attributeservice bundle"; + log.error(message, e); + } + } + + protected void deactivate(ComponentContext ctxt) { + if (log.isDebugEnabled()) { + log.debug("org.wso2.carbon.identity.stonehenge.attributeservice bundle is deactivated"); + } + } +} \ No newline at end of file