Author: dimuthul
Date: Thu Feb 21 03:30:49 2008
New Revision: 13960
Log:
Adding SAML2TestCase
Fixing the test failure
Formatting the code.
Modified:
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilder.java
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SAML2TokenBuilder.java
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SignKeyDataHolder.java
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilderSimulator.java
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilderTest.java
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/X509CredentialImpl.java
trunk/solutions/identity/modules/identity-provider/src/test/resources/wso2identity.hbm.xml
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/saml/relyingparty/SAMLTokenVerifier.java
Modified:
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilder.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilder.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilder.java
Thu Feb 21 03:30:49 2008
@@ -137,20 +137,21 @@
signature.setSignatureAlgorithm(signatureAlgorithm);
signature
.setCanonicalizationAlgorithm(Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
-
+
try {
- KeyInfo keyInfo =
(KeyInfo)buildXMLObject(KeyInfo.DEFAULT_ELEMENT_NAME);
+ KeyInfo keyInfo = (KeyInfo)
buildXMLObject(KeyInfo.DEFAULT_ELEMENT_NAME);
X509Data data = (X509Data)
buildXMLObject(X509Data.DEFAULT_ELEMENT_NAME);
X509Certificate cert = (X509Certificate)
buildXMLObject(X509Certificate.DEFAULT_ELEMENT_NAME);
- String value =
Base64.encode(cred.getEntityCertificate().getEncoded());
+ String value = Base64.encode(cred.getEntityCertificate()
+ .getEncoded());
cert.setValue(value);
data.getX509Certificates().add(cert);
keyInfo.getX509Datas().add(data);
signature.setKeyInfo(keyInfo);
} catch (CertificateEncodingException e) {
- throw new IdentityProviderException("errorGettingCert");
+ throw new IdentityProviderException("errorGettingCert");
}
-
+
assertion.setSignature(signature);
signatureList.add(signature);
}
Modified:
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SAML2TokenBuilder.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SAML2TokenBuilder.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SAML2TokenBuilder.java
Thu Feb 21 03:30:49 2008
@@ -30,7 +30,9 @@
import org.opensaml.xml.io.Marshaller;
import org.opensaml.xml.io.MarshallerFactory;
import org.opensaml.xml.io.MarshallingException;
+import org.opensaml.xml.schema.XSBase64Binary;
import org.opensaml.xml.schema.XSString;
+import org.opensaml.xml.schema.impl.XSBase64BinaryBuilder;
import org.opensaml.xml.schema.impl.XSStringBuilder;
import org.opensaml.xml.security.x509.X509Credential;
import org.opensaml.xml.signature.KeyInfo;
@@ -49,10 +51,10 @@
private static Log log = LogFactory.getLog(SAML2TokenBuilder.class);
- private Assertion assertion = null;
- private AttributeStatement attributeStmt = null;
- private List signatureList = new ArrayList();
- private Element signedAssertion = null;
+ protected Assertion assertion = null;
+ protected AttributeStatement attributeStmt = null;
+ protected List signatureList = new ArrayList();
+ protected Element signedAssertion = null;
public static final String CONF_KEY =
"urn:oasis:names:tc:SAML:2.0:cm:holder-of-key";
@@ -87,14 +89,27 @@
XMLObjectBuilderFactory builderFactory = Configuration
.getBuilderFactory();
- XSStringBuilder attributeValueBuilder = (XSStringBuilder)
builderFactory
- .getBuilder(XSString.TYPE_NAME);
-
- XSString stringValue = attributeValueBuilder.buildObject(
- AttributeValue.DEFAULT_ELEMENT_NAME, XSString.TYPE_NAME);
- stringValue.setValue(claim.value);
- attribute.getAttributeValues().add(stringValue);
+ // TODO remove this else if condition after WSO2 IS supports claim
+ // types properly
+ if (claim.uri.equals(IdentityConstants.CLAIM_PPID)) {
+ XSBase64BinaryBuilder ppidValueBuilder =
(XSBase64BinaryBuilder) builderFactory
+ .getBuilder(XSBase64Binary.TYPE_NAME);
+ XSBase64Binary ppidValue = ppidValueBuilder.buildObject(
+ AttributeValue.DEFAULT_ELEMENT_NAME,
+ XSBase64Binary.TYPE_NAME);
+ ppidValue.setValue(claim.value);
+ attribute.getAttributeValues().add(ppidValue);
+ } else {
+ XSStringBuilder attributeValueBuilder = (XSStringBuilder)
builderFactory
+ .getBuilder(XSString.TYPE_NAME);
+
+ XSString stringValue = attributeValueBuilder
+ .buildObject(AttributeValue.DEFAULT_ELEMENT_NAME,
+ XSString.TYPE_NAME);
+ stringValue.setValue(claim.value);
+ attribute.getAttributeValues().add(stringValue);
+ }
attributeStmt.getAttributes().add(attribute);
}
}
@@ -140,21 +155,21 @@
signature.setSignatureAlgorithm(signatureAlgorithm);
signature
.setCanonicalizationAlgorithm(Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
-
-
+
try {
- KeyInfo keyInfo =
(KeyInfo)buildXMLObject(KeyInfo.DEFAULT_ELEMENT_NAME);
+ KeyInfo keyInfo = (KeyInfo)
buildXMLObject(KeyInfo.DEFAULT_ELEMENT_NAME);
X509Data data = (X509Data)
buildXMLObject(X509Data.DEFAULT_ELEMENT_NAME);
X509Certificate cert = (X509Certificate)
buildXMLObject(X509Certificate.DEFAULT_ELEMENT_NAME);
- String value =
Base64.encode(cred.getEntityCertificate().getEncoded());
+ String value = Base64.encode(cred.getEntityCertificate()
+ .getEncoded());
cert.setValue(value);
data.getX509Certificates().add(cert);
keyInfo.getX509Datas().add(data);
signature.setKeyInfo(keyInfo);
} catch (CertificateEncodingException e) {
- throw new IdentityProviderException("errorGettingCert");
+ throw new IdentityProviderException("errorGettingCert");
}
-
+
assertion.setSignature(signature);
signatureList.add(signature);
}
Modified:
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SignKeyDataHolder.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SignKeyDataHolder.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/saml/SignKeyDataHolder.java
Thu Feb 21 03:30:49 2008
@@ -48,6 +48,7 @@
issuerCerts = KeyUtil.getServiceCertificateChain(keyAlias);
signatureAlgorithm = XMLSignature.ALGO_ID_SIGNATURE_RSA;
+
String pubKeyAlgo = issuerCerts[0].getPublicKey().getAlgorithm();
if (pubKeyAlgo.equalsIgnoreCase("DSA")) {
signatureAlgorithm = XMLSignature.ALGO_ID_SIGNATURE_DSA;
Modified:
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilderSimulator.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilderSimulator.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilderSimulator.java
Thu Feb 21 03:30:49 2008
@@ -23,7 +23,7 @@
public void createStatement(IdentityProviderData ipData, RahasData
rahasData)
throws IdentityProviderException {
-
+
attributeStmt = (AttributeStatement)
buildXMLObject(AttributeStatement.DEFAULT_ELEMENT_NAME);
Subject subject = (Subject)
buildXMLObject(Subject.DEFAULT_ELEMENT_NAME);
@@ -33,27 +33,27 @@
subjectConf.getConfirmationMethods().add(confMethod);
subject.setSubjectConfirmation(subjectConf);
- String uri = "http://www.test.dialect/name";
- int index = uri.lastIndexOf("/");
- String attrName = uri.substring(index + 1, uri.length());
- String attrNamespace = uri.substring(0, index);
-
- Attribute attribute = (Attribute)
buildXMLObject(Attribute.DEFAULT_ELEMENT_NAME);
- attribute.setAttributeName(attrName);
- attribute.setAttributeNamespace(attrNamespace);
-
- XMLObjectBuilderFactory builderFactory = Configuration
- .getBuilderFactory();
-
- XSAnyBuilder attributeValueBuilder = (XSAnyBuilder) builderFactory
- .getBuilder(XSAny.TYPE_NAME);
-
- XSAny stringValue = attributeValueBuilder.buildObject(
- AttributeValue.DEFAULT_ELEMENT_NAME, null);
- stringValue.setTextContent("test");
-
- attribute.getAttributeValues().add(stringValue);
- attributeStmt.getAttributes().add(attribute);
+ String uri = "http://www.test.dialect/name";
+ int index = uri.lastIndexOf("/");
+ String attrName = uri.substring(index + 1, uri.length());
+ String attrNamespace = uri.substring(0, index);
+
+ Attribute attribute = (Attribute)
buildXMLObject(Attribute.DEFAULT_ELEMENT_NAME);
+ attribute.setAttributeName(attrName);
+ attribute.setAttributeNamespace(attrNamespace);
+
+ XMLObjectBuilderFactory builderFactory = Configuration
+ .getBuilderFactory();
+
+ XSAnyBuilder attributeValueBuilder = (XSAnyBuilder) builderFactory
+ .getBuilder(XSAny.TYPE_NAME);
+
+ XSAny stringValue = attributeValueBuilder.buildObject(
+ AttributeValue.DEFAULT_ELEMENT_NAME, null);
+ stringValue.setTextContent("test");
+
+ attribute.getAttributeValues().add(stringValue);
+ attributeStmt.getAttributes().add(attribute);
}
}
Modified:
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilderTest.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilderTest.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/SAML1TokenBuilderTest.java
Thu Feb 21 03:30:49 2008
@@ -33,6 +33,8 @@
builder.marshellAndSign();
Element elemSAML = builder.getSAMLasDOM();
+ //now we have to compare something.
+ //let's compare
// String val = DOM2Writer.nodeToString(elemSAML);
// System.out.println(val);
Modified:
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/X509CredentialImpl.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/X509CredentialImpl.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/test/java/org/wso2/solutions/identity/sts/saml/X509CredentialImpl.java
Thu Feb 21 03:30:49 2008
@@ -25,8 +25,9 @@
private KeyStore store = null;
public X509CredentialImpl() throws Exception {
- InputStream in =
this.getClass().getClassLoader().getResourceAsStream("wso2is.jks");
- //InputStream in = new FileInputStream("wso2is.jks");
+ InputStream in = this.getClass().getClassLoader().getResourceAsStream(
+ "wso2is.jks");
+ // InputStream in = new FileInputStream("wso2is.jks");
store = KeyStore.getInstance("JKS");
store.load(in, "wso2is".toCharArray());
@@ -103,7 +104,7 @@
try {
cert = (X509Certificate) store.getCertificate("localhost");
-
+
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Modified:
trunk/solutions/identity/modules/identity-provider/src/test/resources/wso2identity.hbm.xml
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/test/resources/wso2identity.hbm.xml
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/test/resources/wso2identity.hbm.xml
Thu Feb 21 03:30:49 2008
@@ -287,44 +287,13 @@
</id>
<property name="lastUpdatedTime" type="timestamp"
column="c_last_updated" not-null="true"/>
<property name="rpUrl" column="rp_url" not-null="true"/>
- <property name="userId" column="user_id" not-null="true"/>
+ <property name="userName" column="user_name" not-null="true"/>
<property name="isTrustedAlways" column="is_trusted_always"
not-null="true"/>
<property name="visitCount" column="visit_count" not-null="true"/>
+ <property name="defaultProfileName" column="default_profile_name"
not-null="true"/>
<property name="lastVisit" column="last_visit" type="timestamp"
not-null="true"/>
</class>
- <!-- ######################################################### -->
- <!-- #### UserProfileDO(user_profile) #### -->
- <!-- ######################################################### -->
- <class
name="org.wso2.solutions.identity.persistence.dataobject.UserProfileDO"
- table="openid_user_profile">
- <id name="id" column="id">
- <generator class="native"/>
- </id>
- <property name="lastUpdatedTime" type="timestamp"
column="c_last_updated" not-null="true"/>
- <property name="userId" column="user_id" not-null="true"/>
- <property name="profileName" column="profile_name" not-null="true"/>
- <property name="isDefault" column="is_default" not-null="true"/>
- <set name="profileProperties" lazy="true" cascade="all">
- <key column="profile_id"/>
- <one-to-many
class="org.wso2.solutions.identity.persistence.dataobject.UserProfileValuesDO"/>
- </set>
- </class>
-
- <!-- ######################################################### -->
- <!-- #### UserProfileValuesDO(user_profile_values) #### -->
- <!-- ######################################################### -->
- <class
name="org.wso2.solutions.identity.persistence.dataobject.UserProfileValuesDO"
- table="openid_user_profile">
- <id name="id" column="id">
- <generator class="native"/>
- </id>
- <property name="lastUpdatedTime" type="timestamp"
column="c_last_updated" not-null="true"/>
- <property name="attributeName" column="attribute_name"
not-null="true"/>
- <property name="attributeValue" column="attribute_value"/>
- <many-to-one name="profile" column="profile_id"/>
- </class>
-
<!-- #################################################### -->
<!-- ##### ParameterDO(any utility parameters needed)##### -->
Modified:
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/saml/relyingparty/SAMLTokenVerifier.java
==============================================================================
---
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/saml/relyingparty/SAMLTokenVerifier.java
(original)
+++
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/saml/relyingparty/SAMLTokenVerifier.java
Thu Feb 21 03:30:49 2008
@@ -199,48 +199,49 @@
if (!validationPolicy
.equals(TokenVerifierConstants.PROMISCUOUS)) {
-
+
if (signingCert == null)
throw new RelyingPartyException("signingCertNull");
-
+
/*
do certificate validation
for blacklist, whitelist and cert-validity
*/
-
+
signingCert.checkValidity();
-
+
if (isLoadedFromMessage) {
-
if(!IssuerCertificateUtil.checkSystemStoree(signingCert,
- trustStore, systemStore)){
+ if (!IssuerCertificateUtil.checkSystemStoree(
+ signingCert, trustStore, systemStore)) {
isValid = false;
}
}
if (validationPolicy
.equals(TokenVerifierConstants.BLACK_LIST)) {
- if(!IssuerCertificateUtil.doBlackListCheck(rpData
- .getBlackList(), signingCert)){
+ if (!IssuerCertificateUtil.doBlackListCheck(rpData
+ .getBlackList(), signingCert)) {
isValid = false;
}
}
if (validationPolicy
.equals(TokenVerifierConstants.WHITE_LIST)) {
- if(!IssuerCertificateUtil.doWhiteListCheck(rpData
- .getWhiteList(), signingCert)){
+ if (!IssuerCertificateUtil.doWhiteListCheck(rpData
+ .getWhiteList(), signingCert)) {
isValid = false;
}
}
}
}
- if(isValid){
- SignatureValidator validator = new
SignatureValidator(credential);
+ if (isValid) {
+ SignatureValidator validator = new SignatureValidator(
+ credential);
validator.validate(sig);
holder.populateAttributeTable(this.attributeTable);
}
-
+
} catch (Exception e) {
log.debug(e);
throw new RelyingPartyException("errorInTokenVerification",
_______________________________________________
Identity-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/identity-dev