使用Cognito用户池,没有Cognito联合身份(身份池)

时间:2017-09-03 11:47:47

标签: amazon-cognito aws-cognito

我只想使用Cognito用户池,因此我希望使用与Cognito用户池的身份联合,而不使用Cognito Federated Identities(身份池)。

我已按照文档说明,但我无法成功。

http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-social.html

她是我的用户池配置。

enter image description here

enter image description here

enter image description here

enter image description here

如何在不使用标识池(联合身份)的情况下将Google和Cognito合并到用户池中。或者这可能吗?

4 个答案:

答案 0 :(得分:1)

根据你对Summer Guo的评论,这里看起来你有什么问题...

此处缺少很多详细信息,但如果您在API网关中使用Cognito Authorizer,那么它并不了解任何第三方IDP - 它只知道您的Cognito用户池。因此,发送CUP JWT将起作用,同时发送其他任何其他内容。如果您要使用Google身份验证令牌,则需要实施自定义授权程序,以便通过Google验证此令牌。

我在reInvent期间介绍了这个主题。这是进入细节的视频: https://www.youtube.com/watch?v=VZqG7HjT2AQ

答案 1 :(得分:0)

可以将谷歌配置为身份提供者的用户池,而无需使用Cognito Federated Identities。 Cognito有适用于Android,iOS和Javascript的SDK,您可以在github(https://github.com/aws/)上找到它们。您是否可以更具体地了解尝试执行此操作时遇到的问题?

答案 2 :(得分:0)

看起来他们只允许用户池联盟使用自己的UI / SDK。我最终为 react-native 所做的是

  • 获取facebook令牌

  • 使用自定义属性将用户注册到用户池中以跟踪Facebook ID和通用密码

  • 使用临时凭证(需要为Cognito用户池设置IAM - adminMovetoGroup将用户移动到自动创建的用户池联合组中。

  • 创建lambda函数以自动确认最终用户。

这样,用户可以使用联合身份登录并获取凭据,但是如果他们停止使用Facebook,他们也会拥有一个帐户。他们还需要重置密码。

答案 3 :(得分:0)

如果您使用自己的自定义UI,则需要创建一个button/anchor才能重定向到用户。

这是我用来创建网址(JS代码)的方法:

`https://${domain}/oauth2/authorize`,
  `?redirect_uri=${redirectSignIn}`,
  `&response_type=${responseType}`,
  `&client_id=${userPoolWebClientId}`,
  `&identity_provider=${providerName.toString()}`

providerName是Facebook / Google responseType是令牌/代码 domain您在cognito userpool配置中的域 redirectSignIn在Cognito用户池配置中重定向登录

您将需要致电window.location.assign({the url generated above})。当用户单击该按钮时,它将重定向到Facebook / Google页面,要求提供帐户/权限。

据我所知,尚不支持用于自定义UI的Facebook / Google对话框。

来自AWS Amplify

的示例代码
import { Auth } from 'aws-amplify';

const config = Auth.configure();
const { 
    domain,  
    redirectSignIn, 
    redirectSignOut,
    responseType } = config.oauth;

const clientId = config.userPoolWebClientId;
// The url of the Cognito Hosted UI
const url = 'https://' + domain + '/login?redirect_uri=' + redirectSignIn + '&response_type=' + responseType + '&client_id=' + clientId;

// Launch hosted UI
window.location.assign(url);

链接:https://aws-amplify.github.io/docs/js/authentication

另一件事,您可以将联盟身份链接到用户池帐户。 https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html#adminLinkProviderForUser-property