Я использую AWS Cognito User Pool для входа пользователя в приложение iOS, которое работает нормально.Я хочу добавить Идентификационные данные разработчика .
Согласно руководству
Чтобы использовать идентифицированные разработчиком удостоверения, реализуйте свой собственный класс поставщика удостоверений, который расширяет AWSCognitoCredentialsProviderHelper.Ваш класс провайдера идентификации должен вернуть объект ответа, содержащий маркер в качестве атрибута.
import AWSCore
/*
* Use the token method to communicate with your backend to get an
* identityId and token.
*/
class DeveloperAuthenticatedIdentityProvider : AWSCognitoCredentialsProviderHelper {
override func token() -> AWSTask<NSString> {
//Write code to call your backend:
//pass username/password to backend or some sort of token to authenticate user, if successful,
//from backend call getOpenIdTokenForDeveloperIdentity with logins map containing "your.provider.name":"enduser.username"
//return the identity id and token to client
//You can use AWSTaskCompletionSource to do this asynchronously
// Set the identity id and return the token
self.identityId = resultFromAbove.identityId
return AWSTask(result: resultFromAbove.token)
}
Чтобы использовать этого провайдера идентификации, передайте его в AWSCognitoCredentialsProvider, как показано в следующем примере:
let devAuth = DeveloperAuthenticatedIdentityProvider(regionType: .YOUR_IDENTITY_POOL_REGION, identityPoolId: "YOUR_IDENTITY_POOL_ID", useEnhancedFlow: true, identityProviderManager:nil)
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .YOUR_IDENTITY_POOL_REGION, identityProvider:devAuth)
let configuration = AWSServiceConfiguration(region: .YOUR_IDENTITY_POOL_REGION, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
Я ожидаю, что после того, как я внедрил AWSCognitoCredentialsProviderHelper
и заменил новый credentialsProvider
в моем в настоящее время работающем коде для Cognito User Pool, все будет хорошо работать с Аутентифицированными разработчиком удостоверениями.Проблема в том, где я могу получить имя пользователя / пароль в функции token()
?
В Cognito User Pool я просто вызываю AWSCognitoIdentityUser.getDetails()
, signInViewController
будет представлен AWSCognitoIdentityInteractiveAuthenticationDelegate
и именем пользователяи пароль представлены passwordAuthenticationCompletionSource?.set(result: authDetails)
в signInViewController
.Затем Cognito User Pool сделает все остальное.
Для реализации идентификаторов, прошедших проверку подлинности разработчика, как мне следует ввести имя пользователя и пароль, чтобы выполнить вход, и они окажутся в функции token()
, как и ожидалось в учебнике?