Hi Isura, According to the REST API Guidelines that we have defined across all the products, following suggestions can be made regarding the resource paths that you have proposed.
[1] Base-path "accountrecovery" has two words in it and they can be separated by a dash, i.e. as "account-recovery". [2] It seems that path "rest" does not make any sense as a resource, so it can be removed. [3] Also, all the underscore signs included in processiong-functions like "reset_password" and resource-paths like "security_questions_response" could be replaced with a dash (-). Regards, Dilan. *Dilan U. Ariyaratne* Senior Software Engineer WSO2 Inc. <http://wso2.com/> Mobile: +94766405580 <%2B94766405580> lean . enterprise . middleware On Wed, Jun 8, 2016 at 1:02 PM, Isura Karunaratne <[email protected]> wrote: > Identity Management Recovery API improvements. > > In Identity Server 5.3.0, we are going to implement Identity Management > recovery APIs as rest resources. In current implementations of IS5.0.0, > IS5.1.0 we have soap APIs for recovery scenarios. [1]. > > Captcha validation is coupled with recovery flows in existing soap API > implementation and we have improved Java API to decouple to the captcha > validation from recovery flows in new implementations. [4] > Existing soap APIs.Recover with Notification [2] > > - > > getCaptcha() - Generates a captcha. > - > > verifyUser() - Validates the captcha answer and username and returns > a new key. > - > > sendRecoveryNotification() - Send an email notification with a > confirmation code to the user. Need to provide the key from the previous > call. > - > > getCaptcha() - Generates a captcha when the user clicks on the URL. > - > > verifyConfirmationCode() - Validates the captcha answer and > confirmation code. This returns a key. > - > > updatePassword - Updates the password in the system. Need to provide > the key from the previous call, new password and returns the status of the > update, true or false. > > Recover with Secret Questions[3] > > - > > getCaptcha() - Generates a captcha. > - > > verifyUser() - Validates the captcha answer and username and returns > a new key. > - > > getUserChallengeQuestionIds() - Retrieve the claim URI IDs specified > for the user with the generated key. Need to provide the key from the > previous call. > - > > getUserChallengeQuestion() - Retrieve the user’s challenge question > for the specified claim URI ID from the previous call. Need to provide the > key from the previous call. > - > > verifyUserChallengeAnswer() - Validates the answer and confirmation > code for the specified question. Need to provide the key from the previous > call. > - > > updatePassword() - Updates the password in the system. Need to > provide the key from the previous call, the new password and return the > status of the update, i.e. true or false. > > > > > > New APIs > Recover with Notification > > - > > sendRecoveryNotification() : validate user and returns a new key > through a notification. > - > > updatePassword() : Updates the password in the system. Need to provide > the key from notification, new password > > > Recover with Secret Questions > > - > > intiateUserChallengeQuestion(); validate user and returns a question > to answer with a secret code > - > > verifyUserChallengeAnswer(); validate secret code and answer for the > question in previous step. Return a new question with new secret until > minimum number of questions are answered. > - > > updatePassword(); Updates the password in the system. Need to provide > the key from notification, new password > > > > New APIs for Multiple Questions at once > > - > > getAllChallegeQuestions(); validate user and returns all questions to > answer with a secret code > - > > validateAllChallengeAnswers(); validate code and all answers and > return a code if success > - > > updatePassword();Updates the password in the system. Need to provide > the key from notification, new password > > > > > > > > > > > > [1] https://docs.wso2.com/display/IS510/Password+Recovery > > [2] > https://docs.wso2.com/display/IS510/Password+Recovery#PasswordRecovery-Recoveryusingnotifications > > [3] > https://docs.wso2.com/display/IS510/Password+Recovery#PasswordRecovery-Recoveryusingchallengequestions > > [4] [Architecture] Decouple capcha validation from Recovery flows > > > > Sample Requests > Send Email Notification > > POST accountrecovery/rest/notification/notify > <https://localhost:9443/accountrecovery/rest/notification/notify> > > > Request Body > > { > > "userName": "testuser", > > "tenantDomain": "carbon.super", > > "userStoreDomain": "PRIMARY" > > } > > > If notifications are internally managed, > > Response Body > > HTTP 200 > > > If notifications are externally managed, > > Response Body > > { > > "user": { > > "userName": "testuser", > > "userStoreDomain": "PRIMARY", > > "tenantDomain": "carbon.super" > > }, > > "key": "f75da810-3478-47f4-80e5-c37556392015" > > } > > > > > > *Reset Password.* > > PUT /accountrecovery/rest/notification/reset_password > > Request Body > > { > > "user": { > > "userName": "test", > > "userStoreDomain": "PRIMARY", > > "tenantDomain": "carbon.super" > > }, > > "code": "e4d6041b-2ea7-4dc1-9ae2-b8e9686e1d12", > > "password": "12345" > > } > > > Response Body > > HTTP 200 > > > > > > Initiate User Challenge Question > > PUT /accountrecovery/rest/questions/initiate > > > > Request Body > > { > > "userName": "admin", > > "userStoreDomain": "PRIMARY", > > "tenantDomain": "carbon.super" > > } > > > > Response body > > { > > "question": "City where you were born ?", > > "questionSetId": "http://wso2.org/claims/challengeQuestion1", > > "code": "786f63b6-d0b7-4bd7-991e-12e97e4602e3", > > "status": "INCOMPLETE" > > } > > > > > Validate User Challenge Question, > > POST /accountrecovery/security_questions_response > > Request Body > > { > > "user": { > > "userName": "admin", > > "userStoreDomain": "PRIMARY", > > "tenantDomain": "carbon.super" > > }, > > "key": "12454125-15145-45554155", > > "code": "fbc8e9e0-e6fd-4a75-8502-f03e5836930f", > > "answer": "colombo" > > } > > > > Response body > > { > > "question": "what is your favourite food ?", > > "questionSetId": "http://wso2.org/claims/challengeQuestion2", > > "code": "786f63b6-d0b7-4bd7-991e-12e97e4602e3", > > "status": "INCOMPLETE" > > } > > This should be repeated until status becomes complete. > > > > Response body > > { > > “status” : “COMPLETE”, > > “key” : "3225d2dd-f5fa-44ca-9aa1-d1c32748b569" > > } > > > > Thanks > Isura > > > -- > Isura Dilhara Karunaratne > Senior Software Engineer > > Mob +94 772 254 810 > > > _______________________________________________ > Architecture mailing list > [email protected] > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > >
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
