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