CognitoIdentityCredentials params Ключ входа для входа в систему с Apple ID? - PullRequest
0 голосов
/ 08 января 2020

Какое значение следует использовать для свойства Logins параметров, необходимых для инициализации объекта Cognito Credentials (CognitoIdentityCredentials), если мне требуется поддержка социального входа в систему для Apple ID.

AWS В документации перечислены только следующие ключи

  • Facebook: graph.facebook.com
  • Google: accounts.google.com
  • Amazon: www.amazon.com
  • Twitter: api .twitter.com
  • Цифры: www.digits.com

См. https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_CreateIdentityPool.html#API_CreateIdentityPool и https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentity.html

Я не могу найти то, что следует использовать для Apple ID, в документации AWS, а в машинописи aws -sdk его тоже нет в списке - см. Ниже

    /**
     * A set of optional name-value pairs that map provider names to provider tokens. The available provider names for Logins are as follows:   Facebook: graph.facebook.com    Amazon Cognito user pool: cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>, for example, cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789.    Google: accounts.google.com    Amazon: www.amazon.com    Twitter: api.twitter.com    Digits: www.digits.com   
     */
    Logins?: LoginsMap;

Мой код, как показано ниже ( см. ЧТО СЛЕДУЕТ ВСТАВИТЬ ЗДЕСЬ, ЧТОБЫ ПОДДЕРЖИВАТЬ ИД ЯПОНИИ СОЦИАЛЬНЫЙ ВХОД заполнитель)

        // The parameters required to intialize the Cognito Credentials object.
        const params = {
          AccountId: awsConfig.AWS_ACCOUNT_ID,
          RoleArn: awsConfig.IAM_ROLE_ARN,
          IdentityPoolId: awsConfig.COGNITO_IDENTITY_POOL_ID,
          Logins: { }
        };

        params.Logins[<WHAT SHOULD BE INSERTED HERE TO SUPPORT APPLE ID SOCIAL LOGIN>] = accessToken;
        // set the Amazon Cognito region
        AWS.config.region = awsConfig.AWS_REGION;
        // initialize the Credentials object with our parameters
        AWS.config.credentials = new AWS.CognitoIdentityCredentials(params);

        (AWS.config.credentials as AWS.CognitoIdentityCredentials).get((err: AWSError) => {
          if (err) {
            reject(err);
          }
          else {
            const COGNITO_IDENTITY_ID = (AWS.config.credentials as AWS.CognitoIdentityCredentials).identityId;
            awsConfig.COGNITO_IDENTITY_ID = COGNITO_IDENTITY_ID;
            this.share.cognitoIdentityId = COGNITO_IDENTITY_ID;
            resolve();
          }
        });

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Из AWS Blog:

"Один из способов обойти это - настроить пул пользователей для использования входа в Apple и наличия клиента пула пользователей, который разрешает вход только в Apple. Затем вы можете обработать этот клиент пула пользователей в качестве поставщика проверки подлинности для пула удостоверений. Вы можете добавить дополнительные правила к проверке подлинности пула пользователей, чтобы гарантировать, что только пользователи, которые подписались с помощью Вход в Apple, могут взять на себя соответствующую роль. "

Но это не совсем понятно, что для этого нужно сделать, так как неясно, что такое «клиент пула пользователей». Возможно, они имели в виду «User Pool App Client». Кто-нибудь понял суть того, что имеется в виду?

0 голосов
/ 09 января 2020

Вам необходимо создать провайдера Apple в OpenID или провайдера SAML, если Apple их поддерживает. Это пример для конфигурации Auth0 в качестве поставщика OpenID и соединения с Cognito: https://auth0.com/docs/integrations/integrating-auth0-amazon-cognito-mobile-apps

...