spring mvc - Authentication-Flows: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 -
i'm refer project of ohadr, using spring security login , set new password email. link:
authentication-flows: https://github.com/ohadr/authentication-flows
i have finished steps as:
1. create account 2. confirm account email 3. login sucess 4. change or set new password (this step happened exception)
but when input new password , confirm new password, received exception following as:
severe: servlet.service() servlet [action] in context path [] threw exception [request processing failed; nested exception java.lang.stringindexoutofboundsexception: string index out of range: -1] root cause java.lang.stringindexoutofboundsexception: string index out of range: -1 @ java.lang.string.substring(unknown source) @ com.ohadr.web.crypto.service.cryptoservice.getdecodedstringfromencodedbased64string(cryptoservice.java:244) @ com.ohadr.web.crypto.service.cryptoservice.extractstringanddate(cryptoservice.java:107) @ com.ohadr.web.auth_flows.core.authenticationflowsprocessorimpl.handlesetnewpassword(authenticationflowsprocessorimpl.java:279) @ com.ohadr.web.auth_flows.web.useractioncontroller.setnewpassword(useractioncontroller.java:239) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ org.springframework.web.method.support.invocablehandlermethod.doinvoke(invocablehandlermethod.java:222) @ org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:137) @ org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:110) @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlermethod(requestmappinghandleradapter.java:814) @ org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:737) @ org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:85)
this scope code cause exception:
@override public string handlesetnewpassword( string encuserandtimestamp, string password, string retypedpassword) throws authenticationflowsexception { validateretypedpassword(password, retypedpassword); immutablepair<date, string> stringanddate = cryptoservice.extractstringanddate( encuserandtimestamp ); validateexpiration(stringanddate.getleft()); string email = stringanddate.getright(); //after validations, make work: validate password constraints, , update db: //validate input: authenticationpolicy settings = getauthenticationsettings(); validatepassword(password, settings); string encodedpassword = encodestring(email, password); // go db and: (1) update password, , (2) activate account: setpassword(email, encodedpassword); return email; }
(updated)
get , set value when debug: value of link in email:
http://localhost:9999/rp?uts=ap0wgvpl56fiybmshhle5yh5pwekz/kwebja32ujpsxw
when click link, redirect url(set new password screen):
http://localhost:9999/login/setnewpassword.jsp?enc=ap0wgvpl56fiybmshhle5yh5pwekz/kwebja32ujpsxw
and input value in encuserandtimestamp parameter in debug
finally, received message error:
failed decrypt url content http://localhost:9999/login/setnewpassword.jsp?enc=ap0wgvpl56fiybmshhle5yh5pwekz/kwebja32ujpsxw
it seem url wrong !!
how fix exception, thank much!
you right; indeed bug (since 2014...)
https://github.com/ohadr/authentication-flows/issues/13
however though, i've try reproduce (forgot-password flow), , works fine! here link youtube, can see did...
Comments
Post a Comment