簡體   English   中英

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

[英]Amazon Web Services (AWS) Cognito error "Token is not from a supported provider of this identity pool."

我正在從 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");
    }

});

上面注釋中帶有我名字的代碼行是我自己輸入的代碼。

我無法弄清楚令牌來自哪個提供商。

這是我在 Cognito 控制台中的身份提供商頁面的屏幕截圖。 我沒有選擇任何。 沒有說有身份提供者。

在此處輸入圖片說明

錯誤消息中顯示“服務:AmazonCognitoIdentity”。 我認為提供者將是 Cognito Identity Provider。 我什至發現里面有這個名字的類。

由於某種原因,我對 Cognito Console->Federated Identities->Edit identity pool->Cognito->App client id 有錯誤的值

我不知道我怎么弄錯了。 我將其更改為匹配身份池中的正確之一。

如果您的池中缺少聯合身份配置,則會出現此問題。

Open Federated Identities => Authentication providers

在 Cognito 部分更改值如下

User Pool ID
ex: test:us-east-1_Ab129f000
App client id
ex: test:7lhlkkfbfb4q5kpp90urf000

那應該是解決你的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM