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

Reply via email to