Hi,

On Tue, Jun 14, 2016 at 12:19 AM, Gayan Gunawardana <[email protected]> wrote:

> Hi Isura,
>
> I have few suggestions.
>
> [1] At the end of both flaws (Recover with Notification, Recover with
> Secret Questions) is it possible to send notification (acknowledgment) to
> end user to inform about password update. This will give good experience to
> end user and on the other hand biggest problem with "Recover with Secret
> Questions" is someone else can guess answers for security questions so
> sending notification at the end of password recovery is important.
>

This is already done. If you reest a password, you will get a notificatoin
saying "Your password is successfully reset"

>
> [2] How can we support custom flaws ? For an example
>
> intiateUserChallengeQuestion()
> verifyUserChallengeAnswer()
> sendRecoveryNotification()
> updatePassword()
>

Currenlty, we don't support custom flows.

>
> [3] What are the extension points we have for this implementation ? For an
> example, Instead of sending recovery notification via email user need to
> enter pin which is sent to his mobile.
>

Notificaton sending has the extentison points to support SMS based recovery.

Thanks
Isura

>
> Thanks,
> Gayan
>
>
> On Thu, Jun 9, 2016 at 11:06 AM, Isura Karunaratne <[email protected]> wrote:
>
>> Hi,
>>
>> On Thu, Jun 9, 2016 at 10:53 AM, Harsha Thirimanna <[email protected]>
>> wrote:
>>
>>> Hi Isura,
>>>
>>> Any detail about the error response with relevant error codes ?
>>>
>>
>> We have developed error codes for relevant error scenarios, I will update
>> the docs with error code.
>>
>>
>>>
>>>
>>>
>>> *Harsha Thirimanna*
>>> Associate Tech Lead; WSO2, Inc.; http://wso2.com
>>> * <http://www.apache.org/>*
>>> *email: **[email protected]* <[email protected]>* cell: +94 71 5186770 *
>>> *twitter: **http://twitter.com/ <http://twitter.com/afkham_azeez>*
>>> *harshathirimannlinked-in: **http:
>>> <http://lk.linkedin.com/in/afkhamazeez>**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122
>>> <http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122>*
>>>
>>> *Lean . Enterprise . Middleware*
>>>
>>>
>>> On Thu, Jun 9, 2016 at 10:46 AM, Dilan Udara Ariyaratne <[email protected]
>>> > wrote:
>>>
>>>> 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 (-).
>>>>
>>>
>> Thanks for the infomation. I will modify the apis based on your
>> suggetions.
>>
>> Thanks
>> Isura
>>
>>>
>>>> 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
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Architecture mailing list
>>> [email protected]
>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>
>>>
>>
>>
>> --
>> 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
>>
>>
>
>
> --
> Gayan Gunawardana
> Software Engineer; WSO2 Inc.; http://wso2.com/
> Email: [email protected]
> Mobile: +94 (71) 8020933
>



-- 
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

Reply via email to