Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:Munkaerő-bérlők
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
- Hajtsa végre a lépéseket Felhasználók bejelentkezése egy natív Android-mobilalkalmazásban. Ez a cikk bemutatja, hogyan futtathat egy minta Androidot, amelyet a bérlői beállítások használatával konfigurál.
- Önkiszolgáló jelszó-visszaállítás engedélyezése. Ez a cikk lehetővé teszi az emailes egyszeri kód hitelesítési módszer engedélyezését a bérlő minden felhasználója számára, ami az SSPR követelménye.
- oktatóanyag: Android-alkalmazás előkészítése natív hitelesítésre.
Ö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ényeResetPasswordStartResult.CodeRequired
vagyResetPasswordError
.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ényeResetPasswordSubmitCodeResult.PasswordRequired
vagySubmitCodeError
.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ényeResetPasswordResendCodeResult.Success
vagyResendCodeError
.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ényeResetPasswordResult.Complete
vagyResetPasswordSubmitPasswordError
.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.Complete
SignInContinuationState
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