我是AWS新手并了解Cognito Pools。
我打算使用与Cognito Federated Identity池连接的Cognito用户池。我不想使用具有托管UI功能的登录或任何其他登录UI来登录。
以下是真/可能: -
我真的很感激任何帮助。提前谢谢。
答案 0 :(得分:0)
从后端使用用户名和密码调用一些Cognito API 它可以自动调用已配置的用户池联合身份 提供程序以对用户进行身份验证,然后生成JWT令牌。如果 是的,请你转介/指导我。
这是可能的。您可以使用以下两个参考文献的组合。
Receiving the JWT token from Cognito UserPools
var authenticationData = {
Username : 'username',
Password : 'password',
};
var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
var poolData = { UserPoolId : 'us-east-1_xxxxx',
ClientId : 'xxxxxxxxxxxxxxxx'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var userData = {
Username : 'username',
Pool : userPool
};
var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
console.log('access token + ' + result.getAccessToken().getJwtToken());
/*Use the idToken for Logins Map when Federating User Pools with identity pools or when passing through an Authorization Header to an API Gateway Authorizer*/
console.log('idToken + ' + result.idToken.jwtToken);
},
onFailure: function(err) {
alert(err);
},
});
将JWT令牌传递给Cognito Federated Identity Pool via SDK并交换AWS临时访问凭据以执行针对AWS配置的任何操作。
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:xxxxxxx-xxxx-xxxx-xxxx-xxxxxx',
Logins: {
'cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxx': result.idToken.jwtToken
}
});
AWS用户池中不存在身份提供者中的用户。是 可以使用配置的身份提供程序对用户进行身份验证 没有用户出现在AWS用户池中?如果是,那么将 用户是否在身份验证后在AWS用户池中创建?
仅当您的外部身份提供商支持SAML联盟时才可以这样做。