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

时间:2020-08-28 13:12:25

标签: ios objective-c amazon-web-services aws-lambda amazon-cognito

我有一个用Objective-C编写的旧项目,目前无法移植。

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

现在,我们需要为Google和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

谢谢!

1 个答案:

答案 0 :(得分:1)

也许您根本不需要使用身份池,而只需坚持使用用户池即可。 You can in fact configure 3rd party sign-ins via the User Pool

如果您进入AWS控制台中的用户池并查看菜单底部,您将看到“联合身份验证”。您可以在此处设置联合身份验证,而无需身份池。

  1. 您可以单击“身份提供商”链接,在其中可以输入希望用户能够登录的每个第三方身份提供商(例如Facebook)的凭据和OAuth范围。
  2. 然后,您可以单击“属性映射”链接,并配置用户数据从每个第三方到用户池中相同值的映射,这样无论用户来自哪里,都将与用户池的用户目录中具有相同的属性。
  3. 在用户池中配置了第三方身份提供者后,它将作为选项显示在用户池的“应用程序客户端设置”中显示的“已启用身份提供者”中。
  4. 在“应用程序客户端设置”中启用第三方身份提供程序时,这些提供程序的按钮将显示在“托管用户界面”视图中(如果使用的是托管用户界面)。例如。将显示一个Facebook或Google+按钮,以便您的用户可以使用它们进行身份验证。
  5. 现在,无论您是通过Facebook,Google还是使用用户名和密码登录,您都将始终获得返回的JWT,这些JWT具有标准化的声明(属性)名称(由于属性映射)以及用户池{{ 1}}。