Megosztás a következőn keresztül:


Oktatóanyag: Önkiszolgáló jelszó-visszaállítás hozzáadása

A következőkre vonatkozik:Fehér kör szürke X szimbólummal.Munkaerő-bérlők Zöld kör fehér pipa jellel. Külső bérlők (további információ)

Ez az oktatóanyag bemutatja, hogyan engedélyezheti a felhasználók számára a jelszó módosítását vagy alaphelyzetbe állítását rendszergazdai vagy ügyfélszolgálati közreműködés nélkül.

Ebben az útmutatóban Ön:

  • Adjon hozzá önkiszolgáló jelszó-visszaállítási (SSPR) folyamatot.
  • Adja hozzá az SSPR-hez szükséges felhasználói felületet (UI) az alkalmazáshoz.
  • Hibák kezelése.

Előfeltételek

Önkiszolgáló jelszó-visszaállítási folyamat hozzáadása

Az SSPR-folyamat Android-alkalmazáshoz való hozzáadásához jelszó-visszaállítási felhasználói felületre van szükség:

  • Beviteli szövegmező a felhasználó e-mail-címének (felhasználónév) gyűjtéséhez.
  • Egy bemeneti szövegmező az egyszeri pin-kód gyűjtéséhez.
  • Egy bemeneti szövegmező az új jelszó gyűjtéséhez.

Amikor a felhasználók elfelejtik a jelszavaikat, egy űrlapra van szükségük a felhasználónevek (e-mail-címek) megadásához a jelszó-visszaállítási folyamat elindításához. A felhasználó kiválasztja a Jelszó elfelejtése gombot vagy hivatkozást.

Jelszó-visszaállítási folyamat indítása

A kérés kezeléséhez, amikor a felhasználó a Jelszó elfelejtése gombot vagy hivatkozást választja, használja az Android SDK resetPassword(parameters) metódusát az alábbi kódrészletben látható módon:

 private fun forgetPassword() { 
     CoroutineScope(Dispatchers.Main).launch { 
         val parameter = NativeAuthResetPasswordParameters(username = email)
         val actionResult = authClient.resetPassword(parameter)

         when (resetPasswordResult) { 
             is ResetPasswordStartResult.CodeRequired -> { 
                 // The implementation of submitCode() please see below. 
                 submitCode(resetPasswordResult.nextState) 
             } 
             is ResetPasswordError -> {
                 // Handle errors
                 handleResetPasswordError(resetPasswordResult)
             }
         }
     } 
 } 
  • resetPassword(parameters) metódus jelszó-visszaállítási folyamatot kezdeményez, és a rendszer e-mailben egyszeri pin-kódot küld a felhasználó e-mail-címére ellenőrzés céljából.

  • A resetPassword(parameters) visszatérési eredménye ResetPasswordStartResult.CodeRequired vagy ResetPasswordError.

  • Ha resetPasswordResult is ResetPasswordStartResult.CodeRequired, az alkalmazásnak be kell gyűjtenie a felhasználó e-mail címére küldött egyszeri jelszót, és be kell küldenie az Egyedi e-mail jelszó beküldéseútján.

  • Ha resetPasswordResult is ResetPasswordError, az Android SDK segédprogramokat biztosít a konkrét hibák további elemzéséhez: - isUserNotFound() - isBrowserRequired()

  • Ezek a hibák azt jelzik, hogy az előző művelet sikertelen volt, ezért nem érhető el új állapotra mutató hivatkozás. Ezeket a hibákat a Hibák kezelése szakaszban látható módon kezelheti.

Egyszeri jelszó küldése e-mailben

Az alkalmazás összegyűjti az e-mail egyszeri pin-kódját a felhasználótól. Az e-mail egyszeri pin-kódjának elküldéséhez használja a következő kódrészletet:

private suspend fun submitCode(currentState: ResetPasswordCodeRequiredState) { 
    val code = binding.codeText.text.toString() 
    val submitCodeResult = currentState.submitCode(code) 

    when (submitCodeResult) { 
        is ResetPasswordSubmitCodeResult.PasswordRequired -> { 
            // Handle success
            resetPassword(submitCodeResult.nextState) 
        } 
         is SubmitCodeError -> {
             // Handle errors
             handleSubmitCodeError(actionResult)
         }
    } 
} 
  • A submitCode() művelet eredménye ResetPasswordSubmitCodeResult.PasswordRequired vagy SubmitCodeError.

  • Ha submitCodeResult is ResetPasswordSubmitCodeResult.PasswordRequired az alkalmazásnak új jelszót kell gyűjtenie a felhasználótól, és be kell küldenie azt a Új jelszó küldésecímű témakörben látható módon.

  • Ha a felhasználó nem kapja meg az e-mail egyszeri pin-kódját az e-mailben, az alkalmazás újra elküldheti az e-mail egyszeri pin-kódját. Az új e-mail egyszeri pin-kód ismételt elküldéséhez használja a következő kódrészletet:

    private fun resendCode() { 
         clearCode() 
    
         val currentState = ResetPasswordCodeRequiredState 
    
         CoroutineScope(Dispatchers.Main).launch { 
             val resendCodeResult = currentState.resendCode() 
    
             when (resendCodeResult) { 
                 is ResetPasswordResendCodeResult.Success -> { 
                     // Handle code resent success
                 } 
                 is ResendCodeError -> {
                      // Handle ResendCodeError errors
                  }
             } 
         } 
    } 
    
    • A resendCode() művelet eredménye ResetPasswordResendCodeResult.Success vagy ResendCodeError.

    • ResendCodeError az SDK váratlan hibája. Ez a hiba azt jelzi, hogy az előző művelet sikertelen volt, ezért egy új állapotra mutató hivatkozás nem érhető el.

  • Ha submitCodeResult is SubmitCodeError, az Android SDK segédprogramokat biztosít a konkrét hibák további elemzéséhez:

    • isInvalidCode()
    • isBrowserRequired()

    Ezek a hibák azt jelzik, hogy az előző művelet sikertelen volt, ezért nem érhető el új állapotra mutató hivatkozás. Ezeket a hibákat a Hibák kezelése szakaszban látható módon kezelheti.

Új jelszó elküldése

Miután ellenőrizte a felhasználó e-mail-címét, új jelszót kell gyűjtenie a felhasználótól, és be kell küldenie. Az alkalmazás által a felhasználótól gyűjtött jelszónak meg kell felelnie Microsoft Entra jelszószabályzatainak. Használja a következő kódrészletet:

private suspend fun resetPassword(currentState: ResetPasswordPasswordRequiredState) { 
    val password = binding.passwordText.text.toString() 

    val submitPasswordResult = currentState.submitPassword(password) 

    when (submitPasswordResult) { 
        is ResetPasswordResult.Complete -> { 
            // Handle reset password complete. 
        } 
        is ResetPasswordSubmitPasswordError -> {
            // Handle errors
            handleSubmitPasswordError(actionResult)
        }
    } 
} 
  • A submitPassword() művelet eredménye ResetPasswordResult.Complete vagy ResetPasswordSubmitPasswordError.

  • ResetPasswordResult.Complete a jelszó-visszaállítás sikeres folyamatát jelzi.

  • Ha submitPasswordResult is ResetPasswordSubmitPasswordError, az SDK segédprogramokat biztosít a visszaadott hibatípus további elemzéséhez: - isInvalidPassword() - isPasswordResetFailed()

    Ezek a hibák azt jelzik, hogy az előző művelet sikertelen volt, ezért nem érhető el új állapotra mutató hivatkozás. Ezeket a hibákat a Hibák kezelése szakaszban látható módon kezelheti.

Automatikus bejelentkezés a jelszó visszaállítása után

A jelszó-visszaállítás sikeres befejezése után a felhasználók automatikusan bejelentkezhetnek, anélkül hogy új bejelentkezési folyamatot indítanának.

A ResetPasswordResult.CompleteSignInContinuationState objektumot ad vissza. A SignInContinuationState hozzáférést biztosít signIn(parameters) metódushoz.

A felhasználók automatikus bejelentkezéséhez jelszó-visszaállítás után használja a következő kódrészletet:

 private suspend fun resetPassword(currentState: ResetPasswordPasswordRequiredState) { 
     val submitPasswordResult = currentState.submitPassword(password) 
 
     when (submitPasswordResult) { 
         is ResetPasswordResult.Complete -> { 
             signInAfterPasswordReset(nextState = actionResult.nextState)
         } 
     } 
 } 
 
 private suspend fun signInAfterPasswordReset(nextState: SignInContinuationState) {
     val signInContinuationState = nextState

     val parameters = NativeAuthSignInContinuationParameters()
     val signInActionResult = signInContinuationState.signIn(parameters)

     when (actionResult) {
         is SignInResult.Complete -> {
             fetchTokens(accountState = actionResult.resultValue)
         }
         else {
             // Handle unexpected error
         }
     }
  }
 
 private suspend fun fetchTokens(accountState: AccountState) {
     val getAccessTokenParameters = NativeAuthGetAccessTokenParameters()
     val accessTokenResult = accountState.getAccessToken(getAccessTokenParameters)

     if (accessTokenResult is GetAccessTokenResult.Complete) {
         val accessToken =  accessTokenResult.resultValue.accessToken
         val idToken = accountState.getIdToken()
     }
 }

Az azonosító jogkivonat jogcímeinek lekéréséhez bejelentkezés után használja az Azonosító jogkivonat jogcímeinek olvasásalépéseit.

Jelszó-visszaállítási hibák kezelése

Előfordulhat néhány várt hiba. Előfordulhat például, hogy a felhasználó nem létező e-mailben próbálja meg visszaállítani a jelszót, vagy olyan jelszót ad meg, amely nem felel meg a jelszó követelményeinek.

Ha hibák történnek, adjon a felhasználóknak egy tippet a hibákra.

Ezek a hibák a jelszó-visszaállítási folyamat kezdetekor vagy az e-mail egyszeri pin-kód elküldésekor vagy a jelszó elküldésekor fordulhatnak elő.

A jelszó-visszaállítási folyamat indításának hibakezelése

A jelszó-visszaállítás indítása által okozott hibák kezeléséhez használja a következő kódrészletet:

private fun handleResetPasswordError(error: ResetPasswordError) {
    when {
        error.isUserNotFound() -> {
            // Display error
        }
        else -> {
            // Unexpected error
        }
    }
}

Az egyszeri jelszóval kapcsolatos e-mail küldési hiba kezelése

Az egyszeri pin-kód elküldése által okozott hibák kezeléséhez használja a következő kódrészletet:

private fun handleSubmitCodeError(error: SubmitCodeError) {
    when {
        error.isInvalidCode() -> {
            // Display error
        }
        else -> {
            // Unexpected error
        }
    }
}

Jelszóküldési hiba kezelése

A jelszó elküldése által okozott hibák kezeléséhez használja a következő kódrészletet:

private fun handleSubmitPasswordError(error: ResetPasswordSubmitPasswordError) {
    when {
        error.isInvalidPassword() || error.isPasswordResetFailed()
        -> {
            // Display error
        }
        else -> {
            // Unexpected error
        }
    }
}

Következő lépések

oktatóanyag: Webes visszaállás támogatása Android-alkalmazásban