AWS Cognito SignInWithApple выдает ошибку apple_sub Атрибут не существует в схеме - PullRequest
0 голосов
/ 25 мая 2020

В настоящее время я разрабатываю федерацию SignInWithApple с использованием Amazon Cognito. Во время регистрации пользователя когнито Apple я получаю обратный вызов с атрибутом apple_sub, который не существует в ошибке схемы. Полный URL-адрес обратного вызова ниже:

https://www.localhost:3000/cognito/oauth/callback?error_description=Invalid+user+attributes%3A+apple_sub%3A+Attribute+does+not+exist+in+the+schema.%0A+&state=provider%3DSignInWithApple&error=invalid_request

Я попытался подключить свой когнито к лямбда-триггеру PreSignUp_ExternalProvider и удалить вспомогательный атрибут apple с помощью приведенного ниже кода:

// appleSignIn has an obsolete apple_sub userAttributes
// that is not present inside AWS infrastructure and causes crashes
if (eventData?.request?.userAttributes?.apple_sub) {
    delete eventData.request.userAttributes.apple_sub
}

До сегодняшнего дня это работало чудесно . Сегодня по какой-то причине, даже когда я удаляю пользовательский атрибут apple_sub перед дальнейшей передачей события, я все еще получаю указанную выше ошибку.

Я также пытался добавить собственный атрибут apple_sub, но это не помогло я тоже. Также нет стандартного атрибута apple_sub.

Есть ли способ добавить стандартизированный атрибут apple_sub в мою схему когнито? Почему его нет по умолчанию, когда я разрешаю объединение SignInWithApple?

1 Ответ

0 голосов
/ 25 мая 2020

Тем временем я нашел ответ на свой вопрос, у меня была фатальная ошибка в сопоставлении атрибутов облачной информации:

AttributeMapping:
    apple_sub: "sub"
    email: "email"
  • атрибут apple_sub отсутствует в моей схеме. В то же время консоль AWS ошибочно показывает, что вложенный атрибут сопоставлен с атрибутом имени пользователя пула пользователей, хотя это не

, поэтому правильный формат моего сопоставления атрибутов UserPoolAppleIdentityProvider - :

UserPoolAppleIdentityProvider:
    Type: AWS::Cognito::UserPoolIdentityProvider
    Properties:
        AttributeMapping:
        username: "sub"
        email: "email

или, в идеале, полностью удалить имя пользователя: "sub" из сопоставления, поскольку оно устарело.

...