我只想使用Cognito用户池,因此我希望使用与Cognito用户池的身份联合,而不使用Cognito Federated Identities(身份池)。
我已按照文档说明,但我无法成功。
http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-social.html
她是我的用户池配置。
如何在不使用标识池(联合身份)的情况下将Google和Cognito合并到用户池中。或者这可能吗?
答案 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