我们的设置是:
我能够创建两个成功独立于彼此与AWS Cognito。
我想解决的问题是,如果用户先有一个电子邮件/密码帐户,然后单击Facebook登录,我希望他们链接并提示用户确认他们有权访问该电子邮件/密码帐户。
一旦用户确认以后,他们应该能够登录Facebook或通过电子邮件/密码登录来访问和调整相同的帐户。
Facebook用户在Cognito用户池:-Facebook用户在Cognito用户池
Cognito用户池中链接到Facebook用户的电子邮件/密码用户:Cognito用户池中链接到Facebook用户的电子邮件/密码用户
我目前正在使用预注册触发器来自动验证电子邮件、确认和链接帐户。对于社交网站(Facebook),我使用:
GET amazoncognito.com/oauth2/authorize?identity_provider=Facebook&response_type=code then
POST amazoncognito.com/oauth2/token
这是可行的,但我作为Facebook_用户进行身份验证,我的期望(和希望)是在那时作为链接用户进行身份验证。我觉得我错过了一些明显的东西。
最终,答案是我没有从用户ID中删除Facebook。因此,理论上,我把我的Cognito电子邮件/密码链接到了“Facebook_USERID”,而不是“USERID”
一旦我做了更改,我就可以作为1个链接帐户进行身份验证。
// Get Email
var params = {
UserPoolId: 'YOUR_USER_POOL',
AttributesToGet: ['sub','email'],
Filter: "email = \"" + event.request.userAttributes.email + "\""
}
cognito.listUsers(params, (err, data) => {
if (err) {
console.log(err, err.stack);
}
else {
console.log(data);
console.log(event.userName);
if(data != null && data.Users != null && data.Users[0] != null)
{
console.log(data.Users[0].Username);
var params = {
DestinationUser: {
ProviderAttributeValue: data.Users[0].Username,
ProviderName: 'Cognito'
},
SourceUser: {
ProviderAttributeName: 'Cognito_Subject',
ProviderAttributeValue: event.userName.split("_")[1],
ProviderName: 'Facebook'
},
UserPoolId: 'YOUR_USER_POOL'
};
cognito.adminLinkProviderForUser(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
}
}
});
更新日期:2020年4月24日
我们为所有注册用户添加了一个本地帐户,这样我们就不会遇到问题。如果他们试图通过本机登录,只需激活/重置密码。以下脚本位于我们的预注册触发器Lambda函数中:
{
// ExternalProvider (ie. Social)
if (event.request.userAttributes.hasOwnProperty("email")) {
// Create Native User Always
var params = {
ClientId: backendClientIds[event.userPoolId],
Password: generatePassword(),
Username: event.request.userAttributes.email
};
cognito.signUp(params, function(err, data) {
if (err) {
console.log('cognito.signUp:');
console.log(err, err.stack);
if(err.code === 'UsernameExistsException')
{
// Get and Link Existing User
getUsersAndLink(event.userPoolId, event.request.userAttributes.email, event);
}
}
else {
console.log('cognito.signUp:');
console.log(data);
if(data.UserConfirmed)
{
// Link Newly Created User
linkUser(data.UserSub, event);
}
}
});
}
}
如果有帮助的话,这里有完整的lambda代码:https://pastebin.com/4cyF9Nkw
我正在构建一个Java Web应用程序,当经理批准他们的请求时,它会自动授予用户对其Windows PC的管理权限。 为了实现这一点,我将编写一个脚本来自动远程访问用户的计算机,并将他们添加到计算机的管理组中。我想为了做到这一点,我需要一个管理服务帐户来访问所有的计算机。 我的问题是,我如何安全地存储管理服务帐户信息?应用程序每次需要访问并授予用户管理员权限时都需要凭据,那么我如何让应用程序在没有
我正在尝试使用Active Merchant和active_paypal_adaptive_paymentgem集成Paypal Adaptive结账。在用户注册期间,用户需要注册他/她的PayPal帐户才能在交易期间收到付款。 我已经为activemerchant设置了所有凭据。在paypal中注册用户帐户时,我遇到以下错误。 您正在登录此事务的API调用方的帐户。请更改您的登录信息,然后重试。
我正在使用node.sdk、stormpath、express.js和passport.js为我的新网站制作一个用户帐户系统。所以我设置了一个自定义数据槽的帐户。我想知道,当他们注销时,我如何将新数据发布到这个自定义数据槽中,并在他们登录时检索它。我对使用node是新手,我不知道在他们登录时,我的代码应该放在哪里,也不知道如何访问“用户”帐户信息。据我所知,Passport.js正在处理身份验证,
Contributed by Neil Blakey-Milner. 14.1. 概述 FreeBSD允许多个用户同时使用计算机. 当然,这些用户中不是很多人同时坐在同一台计算机前.[6],而是其他用户可以通过网络来使用同一台计算机以完成他们的工作.要使用系统,每个人都应该有一个帐户. 读完这章,您将了解到: 在一个FreeBSD系统上不同用户帐户之间的区别. 如何添加用户帐户. 如何删除用户帐户
是否可以使用java代码创建/删除windows用户帐户并设置其权限以使其成为管理员帐户、简单用户帐户或来宾帐户?
我需要阻止用户访问Keycloak帐户客户机(/auth/realms/[MYREALM]/Account),但我需要这个客户机提供的Rest API。 我用的是Keycloak 4.1.0。我试图通过keycloak管理面板(/auth/admin/master/console/#/realms/[MYREALM]/clients)禁用account client,但是如果禁用此客户端,acco