Hi devs, In new cloud user model we use email as the user name. For password reset (forget password option) we use AdminManagementService [1].
While doing this there was is a issue [2] because of the '@' sign in the user name(i.e email). When resetting the password a confirmation key is generated which is send in the email. This confirmation key is stored in the registry with the user name in the path. But since user name (i.e. email) contains '@' sign which is a illegal character for registry paths, it is not possible to store this in registry. As a solution we can replace the '@' sign with a '..' and store the confirmation in the registry. This will only effect the usernames which has the'@' sign. I have tested this and it works as expected. Shall we proceed with this fix..? [1] https://svn.wso2.org/repos/wso2/carbon/platform/branches/turing/components/admin-mgt/org.wso2.carbon.admin.mgt/4.2.0/src/main/java/org/wso2/carbon/admin/mgt/services/AdminManagementService.java [2] TID: [0] [Carbon] [2014-04-23 14:52:17,952] ERROR {org.wso2.carbon.admin.mgt.internal.util.PasswordUtil} - Error in generating the confirmation key for the password reset {org.wso2.carbon.admin.mgt.internal.util.PasswordUtil} org.wso2.carbon.registry.core.exceptions.RegistryException: Unable to put resource at org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler.put(MountHandler.java:295) at org.wso2.carbon.registry.core.jdbc.handlers.HandlerManager.put(HandlerManager.java:2503) at org.wso2.carbon.registry.core.jdbc.handlers.UserDefinedHandlerManager.put(UserDefinedHandlerManager.java:205) at org.wso2.carbon.registry.core.jdbc.handlers.HandlerLifecycleManager.put(HandlerLifecycleManager.java:997) at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.put(EmbeddedRegistry.java:697) at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.put(CacheBackedRegistry.java:465) at org.wso2.carbon.registry.core.session.UserRegistry.put(UserRegistry.java:657) at org.wso2.carbon.admin.mgt.internal.util.PasswordUtil.generateConfirmationKey(PasswordUtil.java:155) at org.wso2.carbon.admin.mgt.internal.util.PasswordUtil.initiatePasswordReset(PasswordUtil.java:98) at org.wso2.carbon.admin.mgt.services.AdminManagementService.initiatePasswordReset(AdminManagementService.java:72) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225) at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42) at org.jaggeryjs.rhino.cloudmgt.modules.user.initiate.c1._c_anonymous_1(/cloudmgt/modules/user/initiate/initiate.jag:24) at org.jaggeryjs.rhino.cloudmgt.modules.user.initiate.c1.call(/cloudmgt/modules/user/initiate/initiate.jag) at org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42) at org.jaggeryjs.rhino.cloudmgt.modules.user.initiate.c0._c_anonymous_1(/cloudmgt/modules/user/initiate/module.jag:4) at org.jaggeryjs.rhino.cloudmgt.modules.user.initiate.c0.call(/cloudmgt/modules/user/initiate/module.jag) at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52) at org.jaggeryjs.rhino.cloudmgt.site.blocks.user.initiate.ajax.c0._c_anonymous_1(/cloudmgt/site/blocks/user/initiate/ajax/initiate.jag:16) at org.jaggeryjs.rhino.cloudmgt.site.blocks.user.initiate.ajax.c0.call(/cloudmgt/site/blocks/user/initiate/ajax/initiate.jag) at org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23) at org.jaggeryjs.rhino.cloudmgt.site.blocks.user.initiate.ajax.c0._c_script_0(/cloudmgt/site/blocks/user/initiate/ajax/initiate.jag:5) at org.jaggeryjs.rhino.cloudmgt.site.blocks.user.initiate.ajax.c0.call(/cloudmgt/site/blocks/user/initiate/ajax/initiate.jag) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091) at org.jaggeryjs.rhino.cloudmgt.site.blocks.user.initiate.ajax.c0.call(/cloudmgt/site/blocks/user/initiate/ajax/initiate.jag) at org.jaggeryjs.rhino.cloudmgt.site.blocks.user.initiate.ajax.c0.exec(/cloudmgt/site/blocks/user/initiate/ajax/initiate.jag) at org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:570) at org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273) at org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:432) at org.jaggeryjs.jaggery.core.JaggeryServlet.doPost(JaggeryServlet.java:29) at javax.servlet.http.HttpServlet.service(HttpServlet.java:755) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)confrimation at org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178) at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47) at org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56) at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141) at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Caused by: org.wso2.carbon.registry.core.exceptions.RegistryException: The path '/_system/governance/repository/components/org.wso2.carbon.admin-management-flag/ [email protected]' contains one or more illegal characters (~!@#;%^*()+={}|\<>"',) at org.wso2.carbon.registry.core.jdbc.Repository.put(Repository.java:262) at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.put(EmbeddedRegistry.java:709) at org.wso2.carbon.registry.core.session.UserRegistry.put(UserRegistry.java:657) at org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler.put(MountHandler.java:289) ... 70 more -- *Sumedha Kodithuwakku* Software Engineer WSO2 Inc. : wso2.com lean . enterprise . middleware Email: [email protected]; Mobile: +94 71 808 1124 Blog: http://sumedhask.blogspot.com/
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
