[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1229) Remoting exception with JMS subscription
by Alex Mateescu (JIRA)
Remoting exception with JMS subscription
----------------------------------------
Key: JBSEAM-1229
URL: http://jira.jboss.com/jira/browse/JBSEAM-1229
Project: JBoss Seam
Issue Type: Bug
Components: Remoting
Affects Versions: 1.2.1.GA
Environment: JEMS Installer 1.2 ejb3 profile, JBoss Portal 2.6.0ALPHA1, JBoss Seam 1.2.1GA running on Fedora Core 6, Firefox 1.5
Reporter: Alex Mateescu
Assigned To: Shane Bryzak
Priority: Minor
I am deploying an EAR with multiple (the number is probably irrelevant) JARs and WARs that use Seam Remoting and subscribe to a JMS topic.
The subscribe calls work fine, they send the correct topic name and receive a token. On the first poll, though, there is an exception:
2007-04-23 14:08:29,602 ERROR [org.jboss.seam.remoting.Remoting] Error
java.lang.IllegalArgumentException: Invalid token argument - token not found in Session Context. [undefined]
at org.jboss.seam.remoting.messaging.SubscriptionRegistry.getSubscription(SubscriptionRegistry.java:179)
at org.jboss.seam.remoting.messaging.PollRequest.poll(PollRequest.java:45)
at org.jboss.seam.remoting.PollHandler.handle(PollHandler.java:83)
at org.jboss.seam.remoting.Remoting.getResource(Remoting.java:110)
at org.jboss.seam.servlet.ResourceServlet.doGet(ResourceServlet.java:68)
at org.jboss.seam.servlet.ResourceServlet.doPost(ResourceServlet.java:77)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
Upon closer inspection, the polling request looks like this:
<envelope><body><poll token="c312b1bb-d996-46e4-a8d7-6f35caa99d73" timeout="10"/><poll token="undefined" timeout="10"/></body></envelope>
which is the cause of the exception.
Subsequent calls look fine:
<envelope><body><poll token="c312b1bb-d996-46e4-a8d7-6f35caa99d73" timeout="10"/><poll token="3922899d-1e6b-4bc1-96ab-3713f4460446" timeout="10"/></body></envelope>
I think the error was there before, when using Seam 1.1.0GA, but it was random. I may be wrong, but now it is always there.
Of course, remoting works fine after the initial call.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 5 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3942) LdapIdentityStore should crypt password
by Raimund Hölle (JIRA)
LdapIdentityStore should crypt password
---------------------------------------
Key: JBSEAM-3942
URL: https://jira.jboss.org/jira/browse/JBSEAM-3942
Project: Seam
Issue Type: Feature Request
Components: Security
Affects Versions: 2.1.1.GA, 2.1.1.CR2, 2.1.1.CR1, 2.1.0.SP1
Reporter: Raimund Hölle
Priority: Minor
LdapIdentityStore.changePassword() stores the new password always as plain text in the LDAP database.
To allow crypted passwords, i suggest the following modifications:
New bean properties (along with getter / setter):
private String passwordCryptAlgorithm = "SHA"; // Or "" for plain text, "MD5", ...
private String passwordEncoding = "UTF-8";
Extend changePassword() by one additional line:
public boolean changePassword(String name, String password)
{
InitialLdapContext ctx = null;
try
{
ctx = initialiseContext();
// crypt password if not already done
password = cryptPwIfNeeded(password);
BasicAttribute passwordAttrib = new BasicAttribute(getUserPasswordAttribute(), password);
New Helpers method:
private Pattern cryptedPwRegexp = Pattern.compile("^[{].+[}].+");
private String cryptPwIfNeeded(String password) {
// only crypt if requested by algorithm and not already done!
if (getPasswordCryptAlgorithm() != null
&& ! getPasswordCryptAlgorithm().equals("")
&& ! cryptedPwRegexp.matcher(password).matches()) {
try {
MessageDigest md;
md = MessageDigest.getInstance(getPasswordCryptAlgorithm());
md.reset();
md.update(password.getBytes(getPasswordEncoding()));
byte[] result = md.digest();
password = "{" + getPasswordCryptAlgorithm() + "}" + (new BASE64Encoder()).encode(result);
} catch ( NoSuchAlgorithmException e ) {
throw new IdentityManagementException(
"Configuration problem - can not crypt password with algorithm " + getPasswordCryptAlgorithm(), e);
} catch ( UnsupportedEncodingException e ) {
throw new IdentityManagementException(
"Configuration problem - can not encode password with " + getPasswordEncoding(), e);
}
}
return password;
}
Many regards, Raimund
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 5 months