Ios 从联合身份凭据获取AWS Cognito JWT令牌

Ios 从联合身份凭据获取AWS Cognito JWT令牌,ios,objective-c,amazon-web-services,aws-lambda,amazon-cognito,Ios,Objective C,Amazon Web Services,Aws Lambda,Amazon Cognito,我有一个用objective-c编写的大项目,现在还不能迁移 我们集成了Cognito注册和登录,没有任何问题,检索会话JWT令牌,该令牌被发送到Lambda函数,该函数对其进行解码并提取用户id(sub) 现在,我们需要为谷歌和Facebook添加联合身份才能登录。第一步已经完成,我们使用FB/AppleId登录,在Cognito的身份池中注册用户并获取临时凭证 但是,有没有办法获得一个Cognito JWT令牌来发送给Lambda函数,这样Lambda就可以像Cognito登录一样提取用户i

我有一个用objective-c编写的大项目,现在还不能迁移

我们集成了Cognito注册和登录,没有任何问题,检索会话JWT令牌,该令牌被发送到Lambda函数,该函数对其进行解码并提取用户id(sub)

现在,我们需要为谷歌和Facebook添加联合身份才能登录。第一步已经完成,我们使用FB/AppleId登录,在Cognito的身份池中注册用户并获取临时凭证

但是,有没有办法获得一个Cognito JWT令牌来发送给Lambda函数,这样Lambda就可以像Cognito登录一样提取用户id

这是一个示例凭据响应

    AccessKey: ASIAXQHR5J112WSRIYII
SecretKey: hBIpbSXvYu6Qs4GWd3arAS0JUNqYhIx8qKFB2osv
SessionKey: IQoJb3JpZ2luX2VjEB0aCWV1LXdlc3QtMSJIMEYCIQC0AJj8YcfM6CxXN0yY6VAsmqAIQIqd1s+TnIfOylvg0AIhALBOl334WewTS4chHJjUJozQpjUPkFHGmiuA24iv3FzvKpoECBYQABoMNTE1OTAzNDA5ODU5IgzTfJRwWTTgF/Vuyl8q9wNc+MEFNyXxEr39LmNmH9ftSno74u7deW2riAatFPAQUgeg5NVcV3AvsJtV7zhBHlI53W1DLdw0GlspLuaEyFbzEhoqYhB2lbeYFcf8ycieNtzyftPCv+ea1PMgDKzpTx+KhnYxpTULo5Pr+lII6CJuX88/BRdE+FEeJ8PJ9wZeXjqBO5egkEw9aWcHAe1rZK8yy6wwbIqo7j6V4sIWefivD1TDN0BsRU0lLQ3ZkRmdc5sptipecvQ5fTRaoIWzvtC0CdRacHoPTjMzCtfewMWQ1cCeq/LGsYzRtuFd0qDtNNX7FMSQdrwbt8pnFUxBKPJ9rDT+mOliqaWU7L73hlKLcY2HuBnycLCjnqYu1V0JDYtN2+Co9oHQIcfX5c5e8bPIp6jBQ5sVwizkp07LA0franRRrQzPQlZ2sJTKaNO1W85L6wJWd7DIaN72NL88WzSYzWbESxmjcvsfR3mQ0W8vKlsdxv0apHlJrcjAtAedbkSt3cR18eMgPyFXdudRmU0hWQBW4Oqe7fm9GCf+Ba1fTpjP1GMJw8FLIs798OTUUlCC3VF82iD5wTeU5uWTBAFLt3FE8fbxiCZ1Av0S7HPt+N8mS8d8U66/v/l/tkWVu22NMlXDjVyb87Ik0dzA9AovX/xvxMgPvTPWr9NvqM5kpQdOKxXEezC2hKT6BTqEApjGw3xilPSIdZyJ4KSTOKFzFGDjSOmZ69VOzf8XbjSENhhDFxEU3LaBGbblC9Hhjs+5dO21m2hPac2C85pTngkezckdgrh2ZTK6loGXnFvs5Uzbb4h3fPdHvw7cgU2HgMlyBTcd3k30hUULci+YJvSN6k1tA//VE8NykgGppWCd0OjQlXXi9/05PWSSAKL6lI9IGZfNuGvwO8K3GcNhP8IVRgbg9N7Nstd6+NParBNvhLayoeKo+j7AcfT6CEfUjO6iZMtK5vxHCC0mPclsmLpXu1MqEsSExIAX2R6vpniSVzzqLYDesZJFY/XKQKQKvUt7ryhStVwTfJHGGF1asB5ANF5t
Expiration: 2020-08-28 14:10:14 +0000

提前谢谢

也许您根本不需要使用身份池,只需使用用户池即可

如果您进入AWS控制台中的用户池并查看菜单底部,您将看到“Federation”。您可以在此处设置联合,而不需要标识池

  • 您可以单击“Identity Providers”链接,在该链接中输入您希望用户能够登录的每个第三方身份提供商(如Facebook)的凭据和OAuth范围
  • 然后,您可以单击“属性映射”链接,并配置来自每个第三方的用户数据到用户池中相同值的映射,以便无论用户来自何处,都以相同的属性存储在用户池的用户目录中
  • 在用户池中配置第三方身份提供程序后,它将作为选项显示在用户池的“应用程序客户端设置”中显示的“已启用身份提供程序”中
  • 当您在“应用程序客户端设置”中启用第三方身份提供程序时,这些提供程序的按钮将显示在托管UI视图中(如果您使用的是托管UI)。例如,Facebook或Google+按钮将出现,以便您的用户可以使用它们进行身份验证
  • 现在,无论您是通过Facebook、Google登录,还是使用用户名和密码登录,您都会得到返回的JWTs,其中包含标准化的索赔(财产)名称(因为属性映射),以及用户池
    sub

  • 我已经在用户池中完成了所有这些内容,并遵循了本教程(),但我完全迷失在步骤7和步骤8中。我只是拿到了临时凭证,不是身份证。知道吗?嗯。。。我对一些事情感到困惑。首先,该教程中有几个步骤7和步骤8,我不确定您指的是哪一个。其次,在该教程中没有提到Cognito身份池,但从您的帖子和评论来看,您似乎在使用身份池获取临时AWS凭据。我想说的是,您不需要身份池,也不需要临时凭据,因为您可以直接从用户池获得JWT。我想我还是有点困惑。我有一个Facebook和Cognito联合身份的用户池,我需要一个JWT令牌发送到Lambda函数以提取用户ID(sub)。我可以用Cognito Pool标准用户,但不能用Facebook或AppleId用户。