Amazon Web Services (AWS) Cognito 错误“令牌不是来自此身份池的受支持提供商。”

Dan*_*wer 11 java eclipse amazon-web-services amazon-cognito aws-sdk

我正在从 GitHub运行这个应用程序,它允许用户注册并登录到 Cognito 客户端应用程序。我正在使用 Eclipse IDE for Enterprise Java Developers 版本:2019-03 (4.11.0),构建 ID:20190314-1200。我确保我准确地输入了所有必要的凭据。我可以同时使用表单和控制台进行注册。

当我尝试登录时,我在控制台中收到一条错误消息,提示“令牌不是来自此身份池的受支持提供者”。使用表单和控制台。

我已经尝试过关于堆栈溢出的其他帖子的答案,类似于这个问题。我的错误的原因与其他帖子中的原因不同。

控制台视图和下面的代码都是当我使用应用程序的表单版本时。

这是表格的屏幕截图:

在此处输入图片说明

这是控制台显示的内容,没有错误的详细信息:

{"sub":"52c99df9-f7ef-42b2-9127-9675ba4e2414","email_verified":false,"iss":" https://cognito-idp.us-east-1.amazonaws.com/us-east- 1_d0Y5gS66r ","phone_number_verified":true,"cognito:username":"*****","aud":"4feegfdtp0dbt9atu56vruuv37","event_id":"c77eff2c-01ad-42c3-8dac-a4849" :"id","auth_time":1560793958,"phone_number":"+***********","exp":1560797558,"iat":1560793958,"email":"*** *****"}

用户已通过身份验证:eyJrawQiOiJ4K1piekppSWN4RjZtbDVENjVSQXAySlBOQ0ROK2FmU3Fpc1BnSDE0c3ZvPSIsImFsZyI6IlJTMjU2In0..BqyjJJgOZcQP7yUDd3wDrrK4pNRs8BE8RvBzl2vIz248f3rgQ4fn1cd54azjtlplGkthbB0zA9xcd7gPJzqffd-3wS9RFevxkT4LfSiGF1UXGpIqHH_GhbMHA4dG6nKqBOmInvcn9gR1oblBszdbvUxE1poyP3MLvIi64vRvYm1P2kdikWlXl7qKH_RFivEmRMbpd4xpXH6Gjv3hxE6w2vn4O3oZkwz5eY-djUfbwy_uhItycPB3yZLGS8LU55vkrvyJrzHQLDu1U5AvkHGLZv1H7GveHm36RRwSGH5ZkCrtfkolRBN7wkqq9pGhh3jccqHN6Ml5L3XmH3irFNikfw

提供者 = cognito-idp.us-east-1.amazonaws.com/us-east-1_d0Y5gS66r

线程“JavaFX 应用程序线程”中的异常

com.amazonaws.services.cognitoidentity.model.NotAuthorizedException:

令牌不是来自此身份池的受支持提供者。

(服务:AmazonCognitoIdentity;状态代码:400;错误代码:

NotAuthorizedException; 请求 ID:

b295ece8-9128-11e9-bb89-5d1e066e532b)

这是我按下以登录的登录按钮的代码:

signin_button = new Button("Sign-In");
Label auth_message = new Label("");
signin_button.setOnAction((ActionEvent e) -> {
    String result = helper.ValidateUser(Username.getText(), Password.getText());
    if (result != null) {
        System.out.println("User is authenticated:" + result);
        auth_message.setText("User is authenticated");
        JSONObject payload = CognitoJWTParser.getPayload(result);
        String provider = payload.get("iss").toString().replace("https://", "");

        // Daniel Brower
        System.out.println("provider = " + provider);

        Credentials credentails = helper.GetCredentials(provider, result);


        ShowUserBuckets(credentails);
    } else {
        System.out.println("Username/password is invalid");
        auth_message.setText("Username/password is invalid");
    }

});
Run Code Online (Sandbox Code Playgroud)

上面注释中带有我名字的代码行是我自己输入的代码。

我无法弄清楚令牌来自哪个提供商。

这是我在 Cognito 控制台中的身份提供商页面的屏幕截图。我没有选择任何。没有说有身份提供者。

在此处输入图片说明

错误消息中显示“服务:AmazonCognitoIdentity”。我认为提供者将是 Cognito Identity Provider。我什至发现里面有这个名字的类。

Dan*_*wer 22

由于某种原因,我对 Cognito Console->Federated Identities->Edit identity pool->Cognito->App client id 有错误的值

我不知道我怎么弄错了。我更改了它以匹配正确的身份池。

  • 太感谢了!!就我而言,我只是忘记在“编辑身份池”中添加新的客户端应用程序 (3认同)

Had*_*zar 6

如果您的池中缺少联合身份配置,则会出现此问题。

Open Federated Identities => Authentication providers

在 Cognito 部分更改值如下

User Pool ID
ex: test:us-east-1_Ab129f000
App client id
ex: test:7lhlkkfbfb4q5kpp90urf000
Run Code Online (Sandbox Code Playgroud)

那应该是解决你的问题