Amazon Cognito - 使用 Amazon Connect 联合用户

Amazon Cognito - Federating Users with Amazon Connect

我们正在尝试使用 Amazon Cognito 的托管登录页面,最终目标是根据 Amazon Connect 实例对用户进行身份验证。我们有一个使用 amazon connect streams 库的网络应用程序,并希望在初始化之前让用户登录到 Connect。

目的是使用 Cognito 登录过程提供一组临时凭据,使我们能够调用 Connect API 的 getFederationToken 方法,并随后让用户登录到 Connect此调用提供的令牌。

设置的一些细节:

连接设置为使用 SAML 进行身份验证。

双方用户 have/use 用户名的电子邮件地址。

Cognito 用户池设置了应用程序客户端。应用程序客户端具有:these readable/writable attributes, these allowed flows/scopes,托管登录页面在完成后将用户定向到我们的 Web 应用程序,这是我们获取 Id 令牌的时间。

Cognito Identity Pool 的身份验证角色(我认为假定 post Cognito 身份验证流程)具有适当的信任关系和权限,允许它针对连接实例调用连接 GetFederationToken 方法。此池的身份验证提供程序设置为 cognito 用户池。

下面的一段代码(ids 已编辑)显示了我们目前正在尝试做的事情:

// Id token extracted from params
var IdToken = hashObj.id_token;

// Initialize the Amazon Cognito credentials provider
AWS.config.region = 'eu-west-2';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'eu-west-2:00000000-0000-0000-0000-000000000000',
    Logins: {
        'cognito-idp.eu-west-2.amazonaws.com/eu-west-2_abcdefg': IdToken
    }        
});

var connect = new AWS.Connect();
var params = {
    InstanceId: '00000000-0000-0000-0000-000000000000' /* required */
};

//  Attempt to get a federation token from connect using the creds constructed above.
connect.getFederationToken(params, function (err, data) {
    if (err) {
        console.log(err);
    } // an error occurred
    else {
        console.log(data);
    }
});

问题是这样的:联合调用返回用户未找到结果。

基本上它无法将我们通过 Cognito 身份验证过程的用户与 Connect 中的用户匹配(我已经检查了用户名匹配的次数超过了我现在可以计算的次数)。

我们已经尝试过:

关于我们缺少什么的任何想法?好像差了一小步

您将无法设置它。这是因为 Cognito 是 OIDC 身份提供者。 AWS Connect 需要的是 SAML 身份提供商。