On 07/16/2010 07:48 PM, xManish wrote:
Sergiu Dumitriu-2 wrote:
XWiki authenticates using cookies. You could duplicate the code that adds the right cookies (com.xpn.xwiki.user.impl.xwiki.MyPersistentLoginManager#rememberLogin) into your application, and XWiki will automatically see them and login the right user. Don't forget to remove those cookies on logout (#forgetLogin).
Hi, Thankyou for the reply. I tried to reuse the code from (com.xpn.xwiki.user.impl.xwiki.MyPersistentLoginManager#rememberLogin) I found that it requires two variables to be set beforehand, which I believe would come from xwiki.cfg. These are this.secretkey and this.validationkey So, I tried to instantiate them myself in myProject for secretkey, I did following byte[] theKey = stringToHex("secret").getBytes(); KeySpec ks = new DESKeySpec(theKey); SecretKeyFactory kf = SecretKeyFactory.getInstance("DES"); this.secretKey = kf.generateSecret(ks);
Since validationkey was just a string, I did following this.validationKey = "validt";
Then I edited the xwiki.cfg file of my xwiki installation xwiki.authentication.validationKey=validt xwiki.authentication.encryptionKey=secret
After loggin into the system, I found that cookies are set. However that user aren't automatically logged in xwiki.
I'm not sure what the format of the keys should be, but trying your keys ends up with an error in the logs: Error: java.security.InvalidKeyException: Wrong key size Actually, it says this in xwiki.cfg, above the keys: #-# Cookie encryption keys. You SHOULD replace these values with any random string, #-# as long as the length is the same. So you should generate keys with 32 characters.
I'm sure I've been missing something in the process. Can you please looked into it and identify it.
-- Sergiu Dumitriu http://purl.org/net/sergiu/