Author: dimuthul
Date: Mon Feb 18 03:24:05 2008
New Revision: 13856
Log:
Fixing an issue in the SAML token validator.
Modified:
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/admin/UserProfileAdmin.java
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/persistence/IPPersistenceManager.java
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/persistence/dao/UserProfileDAO.java
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
Modified:
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/admin/UserProfileAdmin.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/admin/UserProfileAdmin.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/admin/UserProfileAdmin.java
Mon Feb 18 03:24:05 2008
@@ -17,23 +17,28 @@
throws IdentityProviderException {
dbman.create(userProfile);
}
-
+
public void deleteUserProfile(String userId, String profileName)
throws IdentityProviderException {
UserProfileDO userProfile = dbman.getUserProfile(userId, profileName);
dbman.delete(userProfile);
}
-
- public UserProfileDO[] getUserProfiles(String userId){
+
+ public UserProfileDO[] getUserProfiles(String userId) {
return dbman.getUserProfiles(userId);
- }
-
- public UserProfileValuesDO[] getUserProfileValues(String userId,String
profileName){
- return dbman.getUserProfileValues(userId, profileName);
}
-
- public void setUserProfileValues(UserProfileValuesDO[] values){
- //TODO
+
+ /**
+ * Get user profile values
+ * @param userId
+ * @param profileName
+ * @return
+ */
+ public UserProfileValuesDO[] getUserProfileValues(String userId,
+ String profileName) {
+ return dbman.getUserProfileValues(userId, profileName);
}
+
+
}
Modified:
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/persistence/IPPersistenceManager.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/persistence/IPPersistenceManager.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/persistence/IPPersistenceManager.java
Mon Feb 18 03:24:05 2008
@@ -176,7 +176,7 @@
ClaimDAO dao = new ClaimDAO(hbConfig);
return dao.getAllEnabledClaims();
}
-
+
/**
* Provides all claims that are mapped and enabled.
*
@@ -236,8 +236,6 @@
dao.backupExpiredCards();
}
-
-
public RelyingPartyDO[] getAllRelyingParties() {
RelyingPartyDAO dao = new RelyingPartyDAO(hbConfig);
return dao.getAllRelyingParties();
@@ -308,7 +306,6 @@
return dao.getRealm(className);
}
-
public void RevokeInfoCard(InfoCardDO infoCard)
throws IdentityProviderException {
InfoCardDAO icDao = new InfoCardDAO(hbConfig);
@@ -327,8 +324,7 @@
return dao.getAllRevokedInfoCards();
}
- public UserTrustedRPDO[] getAllPersonalRelyingParties(
- String userId) {
+ public UserTrustedRPDO[] getAllPersonalRelyingParties(String userId) {
UserPersonalRelyingPartyDAO dao = new UserPersonalRelyingPartyDAO(
hbConfig);
return dao.getAllPersonalRelyingParties(userId);
@@ -414,13 +410,13 @@
IssuedTokenDAO dao = new IssuedTokenDAO(hbConfig);
return dao.getTokensGroupedByCardAndUser();
}
-
+
public IssuedTokensDO[] getAllTokensOfUser(String username) {
IssuedTokenDAO dao = new IssuedTokenDAO(hbConfig);
return dao.getTokensForUser(username);
}
-
- public IssuedTokensDO[] getTokensForUser(String userId){
+
+ public IssuedTokensDO[] getTokensForUser(String userId) {
IssuedTokenDAO dao = new IssuedTokenDAO(hbConfig);
return dao.getTokensForUser(userId);
}
@@ -436,34 +432,34 @@
IssuedTokenDAO dao = new IssuedTokenDAO(hbConfig);
return dao.getTokenDetailsForCardAndUser(cardId, userId);
}
-
- public String extractPrimaryUserName(String ppid){
+
+ public String extractPrimaryUserName(String ppid) {
RegisteredInfoCardInfoDAO dao = new
RegisteredInfoCardInfoDAO(hbConfig);
return dao.extractPrimaryUserName(ppid);
}
-
+
public OpenIDUserRPDO[] getOpenIDUserRP(String userId, String rpUrl) {
OpenIDUserRPDAO dao = new OpenIDUserRPDAO(hbConfig);
return dao.getOpenIDUserRP(userId, rpUrl);
}
-
+
public OpenIDUserRPDO[] getOpenIDUserRP(String userId) {
OpenIDUserRPDAO dao = new OpenIDUserRPDAO(hbConfig);
return dao.getOpenIDUserRP(userId);
}
-
- public UserProfileDO[] getUserProfiles(String userId){
+
+ public UserProfileDO[] getUserProfiles(String userId) {
UserProfileDAO dao = new UserProfileDAO(hbConfig);
return dao.getUserProfiles(userId);
}
-
-
- public UserProfileDO getUserProfile(String userId, String profileName){
+
+ public UserProfileDO getUserProfile(String userId, String profileName) {
UserProfileDAO dao = new UserProfileDAO(hbConfig);
return dao.getUserProfile(userId, profileName);
}
-
- public UserProfileValuesDO[] getUserProfileValues(String userId,String
profileName){
+
+ public UserProfileValuesDO[] getUserProfileValues(String userId,
+ String profileName) {
UserProfileDAO dao = new UserProfileDAO(hbConfig);
return dao.getUserProfileValues(userId, profileName);
}
Modified:
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/persistence/dao/UserProfileDAO.java
==============================================================================
---
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/persistence/dao/UserProfileDAO.java
(original)
+++
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/persistence/dao/UserProfileDAO.java
Mon Feb 18 03:24:05 2008
@@ -1,6 +1,7 @@
package org.wso2.solutions.identity.persistence.dao;
import java.util.List;
+import java.util.Map;
import org.hibernate.Query;
import org.hibernate.Session;
@@ -94,4 +95,36 @@
return profileValues;
}
+ /**
+ * If value is there - then update it else add it
+ * @param userId
+ * @param profileName
+ * @param attributeName
+ * @param attributeValue
+ */
+ public void setUserProfileValues(String userId, String profileName,
+ Map properties) {
+
+ Session session = hbConfig.getCurrentSession();
+ Transaction tx = session.beginTransaction();
+ UserProfileValuesDO[] profileValues = new UserProfileValuesDO[0];
+ try {
+ String stmt = "from UserProfileValuesDO as value where
value.profile.userId = '"
+ + userId + "' and value.profile.profileName =
'"+profileName+"'";
+
+ Query query = session.createQuery(stmt);
+ List lst = query.list();
+
+
+ } catch (Throwable e) {
+ tx.rollback();
+ String msg = messages
+ .getMessage("errorQuerryingRegisteredInfoCardInfo");
+ log.error(msg, e);
+ throw new RuntimeException(msg, e);
+ } finally {
+ hbConfig.closeSession();
+ }
+ }
+
}
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
Mon Feb 18 03:24:05 2008
@@ -12,7 +12,6 @@
import org.apache.commons.logging.LogFactory;
import org.apache.rahas.RahasData;
import org.apache.xml.security.c14n.Canonicalizer;
-import org.apache.xml.security.signature.XMLSignature;
import org.apache.xml.security.utils.Base64;
import org.joda.time.DateTime;
import org.opensaml.saml1.core.Assertion;
@@ -152,7 +151,7 @@
throws IdentityProviderException {
Signature signature = (Signature)
buildXMLObject(Signature.DEFAULT_ELEMENT_NAME);
signature.setSigningCredential(cred);
- signature.setSignatureAlgorithm(XMLSignature.ALGO_ID_SIGNATURE_RSA);
+ signature.setSignatureAlgorithm(signatureAlgorithm);
signature
.setCanonicalizationAlgorithm(Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
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
Mon Feb 18 03:24:05 2008
@@ -1,5 +1,6 @@
package org.wso2.solutions.identity.sts.saml;
+import java.security.cert.CertificateEncodingException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -11,7 +12,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.rahas.RahasData;
import org.apache.xml.security.c14n.Canonicalizer;
-import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Base64;
import org.joda.time.DateTime;
import org.opensaml.saml2.core.Assertion;
import org.opensaml.saml2.core.Attribute;
@@ -32,8 +33,11 @@
import org.opensaml.xml.schema.XSString;
import org.opensaml.xml.schema.impl.XSStringBuilder;
import org.opensaml.xml.security.x509.X509Credential;
+import org.opensaml.xml.signature.KeyInfo;
import org.opensaml.xml.signature.Signature;
import org.opensaml.xml.signature.Signer;
+import org.opensaml.xml.signature.X509Certificate;
+import org.opensaml.xml.signature.X509Data;
import org.w3c.dom.Element;
import org.wso2.solutions.identity.IdentityConstants;
import org.wso2.solutions.identity.IdentityProviderException;
@@ -133,9 +137,24 @@
throws IdentityProviderException {
Signature signature = (Signature)
buildXMLObject(Signature.DEFAULT_ELEMENT_NAME);
signature.setSigningCredential(cred);
- signature.setSignatureAlgorithm(XMLSignature.ALGO_ID_SIGNATURE_RSA);
+ signature.setSignatureAlgorithm(signatureAlgorithm);
signature
.setCanonicalizationAlgorithm(Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
+
+
+ try {
+ 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());
+ cert.setValue(value);
+ data.getX509Certificates().add(cert);
+ keyInfo.getX509Datas().add(data);
+ signature.setKeyInfo(keyInfo);
+ } catch (CertificateEncodingException e) {
+ throw new IdentityProviderException("errorGettingCert");
+ }
+
assertion.setSignature(signature);
signatureList.add(signature);
}
_______________________________________________
Identity-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/identity-dev