Хотя Credential Manager поддерживает вход в систему на основе паролей, мы настоятельно рекомендуем отдавать приоритет современным, более безопасным методам аутентификации, таким как ключи доступа и вход через Google . Эти методы обеспечивают значительно лучшую безопасность и удобство использования. Однако, если вашему приложению необходимо поддерживать пароли, используйте это руководство в качестве справочника для реализации паролей с помощью Credential Manager.
Менеджер учетных данных предоставляет унифицированный API для вашего приложения, позволяющий сохранять и получать учетные данные пользователей, включая имена пользователей и пароли. Это упрощает процесс входа в систему для пользователей и позволяет им беспрепятственно использовать поставщики учетных данных.
Предварительные требования
Реализация паролей в Credential Manager работает на устройствах под управлением Android 4.4 (уровень API 19) и выше.
Обзор
В этом руководстве рассматриваются изменения, необходимые в вашем приложении для создания, сохранения и входа в систему с помощью пароля.
- Добавьте зависимости в ваше приложение : добавьте необходимые библиотеки диспетчера учетных данных.
- Создание экземпляра диспетчера учетных данных : Создайте экземпляр диспетчера учетных данных.
- Сохранение пароля пользователя : Надежное хранение учетных данных пользователя.
- Вход с помощью пароля : Получение и использование сохраненных учетных данных для входа в систему.
- Определите поля, для которых следует использовать автозаполнение : Используйте автозаполнение для улучшения пользовательского опыта.
- Добавлена поддержка ссылок на цифровые активы : добавлена возможность обмена паролями между связанными приложениями и веб-сайтами.
Добавьте зависимости в ваше приложение.
Добавьте следующие зависимости в файл build.gradle вашего модуля приложения:
Котлин
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Круто
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Создать менеджер учетных данных
Используйте контекст вашего приложения или действия для создания объекта CredentialManager .
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Сохранить пароль пользователя
Когда пользователь успешно регистрируется или обновляет свой пароль в вашем приложении, сохраните эти учетные данные в его менеджере паролей.
Создайте запрос на сохранение пароля : объект
CreatePasswordRequestсодержит имя пользователя и пароль для сохранения. ВызовитеcredentialManager.createCredential()для начала процесса сохранения.Обработка ответа : обработайте запрос
CreatePasswordResponseи урегулируйте любые ошибки (например, если пользователь отменил запрос).
suspend fun registerPassword(username: String, password: String) {
// Initialize a CreatePasswordRequest object.
val createPasswordRequest =
CreatePasswordRequest(id = username, password = password)
// Create credential and handle result.
coroutineScope {
try {
val result =
credentialManager.createCredential(
// Use an activity based context to avoid undefined
// system UI launching behavior.
activityContext,
createPasswordRequest
)
// Handle register password result
} catch (e: CreateCredentialException) {
handleFailure(e)
}
}
}
Войдите с помощью пароля.
Для получения сохраненных учетных данных создайте запрос GetCredentialRequest с параметром GetPasswordOption и вызовите getCredential() . Чтобы отфильтровать пароли, которые будут получены, на основе указанных идентификаторов пользователей, используйте необязательное поле allowedUserIds .
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Определите поля, для которых следует использовать автозаполнение.
Атрибут android:isCredential помогает поставщикам учетных данных идентифицировать поля, предназначенные для автозаполнения, что обеспечивает более удобный пользовательский интерфейс. Этот атрибут дополняет существующие autofillHints ).
К преимуществам указания определенных полей для автоматического заполнения относятся:
- Повышена точность автозаполнения : помогает менеджерам паролей и системе Android лучше распознавать поля, предназначенные для ввода учетных данных.
- Улучшенный пользовательский опыт : может привести к более плавным и надежным подсказкам автозаполнения.
Добавьте атрибут isCredential в поля имени пользователя и пароля, как показано в следующем примере:
<EditText
android:id="@+id/username_edittext"
android:autofillHints="username"
android:isCredential="true" />
<EditText
android:id="@+id/password_edittext"
android:inputType="textPassword"
android:autofillHints="password"
android:isCredential="true" />
В качестве альтернативы, атрибут можно добавить программно, как показано в следующем фрагменте кода:
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Добавить поддержку ссылок на цифровые активы.
Для обеспечения совместимости с менеджерами паролей необходимо настроить цифровые ссылки на активы между вашим приложением и веб-сайтом. Это позволит безопасно обмениваться учетными данными между обеими платформами.