当前位置: 首页 > 知识库问答 >
问题:

AWS Cognito getId"无效的登录令牌。发行人与提供者不匹配Name”

谢弘阔
2023-03-14

我已经使用API“InitiateAuth”对Cognito用户池进行了身份验证,并收到了一个id令牌:

{
   sub: "8aec..." ,
   aud:"2gr0fdlr647skqqghtau04vuct",
   iss:"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q",
   ....
}

然后我尝试通过API“GetId”获取ID:

{
   AccountId: "345745834314"
   IdentityPoolId: "us-east-1:fb4d5209-33b1-46e2-923a-8aa206d5c7aa"
   Logins: {
      "cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q": "eyJr...." 
   }
}

我已经设置了一个标识池,并正确地将Cognito用户池设置为提供者。但我总是从getId中得到回复:

"无效的登录令牌。发行人与提供者不匹配Name”

我还尝试将登录列表中的提供商名称更改为:

https://cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q

因此,它与iss字段中的令牌完全匹配,但这并不能解决问题,仍然是关于颁发者的消息与提供者名称不匹配。

知道我做错了什么吗?

共有2个答案

柏正平
2023-03-14

对我来说,问题是区域值不正确。

如果您在串联字符串中使用亚马逊提供的区域,请确保使用系统版本:

public static Amazon.RegionEndpoint Region = Amazon.RegionEndpoint.USEast1;

string providerUrl = "cognito-idp." + Region.System + ".amazonaws.com/us-east-1_XYZ1234";

蒋英博
2023-03-14

好了,我想通了,实际上在提供商名称周围有一组额外的引号:“cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q”

开发人员控制台中,它显示:

{
   AccountId: "345745834314"
   IdentityPoolId: "us-east-1:fb4d5209-33b1-46e2-923a-8aa206d5c7aa"
   Logins: {
      "cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q": "eyJr...." 
   }

}

它只在提供者名称周围加了引号,而没有其他字段,这让我产生了怀疑。我单击“查看源代码”查看实际发送的json,如下所示:

"\"cognito-idp.us-east-1.amazonaws.com/us-east-1_LzM42GX6Q\""

我删除了额外的报价,它的工作原理。

 类似资料:
  • 问题内容: 我正在用硒编写以下代码,并且显示以下错误,请让我知道问题出在哪里。 导入org.testng.annotations.DataProvider; 导入org.testng.annotations.Test; 错误: 失败:testData org.testng.internal.reflect.MethodMatcherException:数据提供者不匹配方法:testData([Pa

  • 我在Laravel5.2中遇到AJAX POST请求问题。我正在AJAX请求中传递一个有效的CSRF令牌。 使用Laravel Collective HTML package form标记打开和关闭表单,该标记会自动添加一个带有CSRF标记的隐藏标记输入。呈现的HTML: 使用Fetch API和FormData执行AJAX请求: CSRF令牌和表单数据位于请求负载中: 请求有效负载和x-csrf

  • 我试图张贴使用ajax在laravel 5.我得到CSRF令牌不匹配异常。我环顾四周,发现可能存在这样的问题,但在这种情况下,我确实包括了所有必要的代码。 请看一下我的代码。 看法 我已经在隐藏输入中提供了令牌,并将其包含在我的帖子中。 我有一个元在头如下。 下面是我的控制器。 这个只是测试用的,这里没什么。我的路线如下 请帮我解决这个问题 这是日志中的输出。 以下是我的浏览器控制台帖子标题和页面

  • 我有一个问题: WWW Authenticate Bearer realm=“test”,error=“invalid_token”,error_description=“invalid token issuer.Expected”http://keycloak:8080/auth/realms/test“但是”http://localhost:8080/auth/realms/test“ 我的设

  • 我已经将我的keycloak服务器放置在apache代理后面: 我成功地告诉javascript端的keycloak使用/auth进行身份验证: 我已经设法登录了,但是在发出服务器请求之后,过滤器(from)抛出异常: 我如何才能使该设置工作?

  • 我在DynamoDB中创建了一个表“user\u info”,其中有一个主哈希键“user\u id”(String),没有范围键。然后,我创建了2个AWS lambda函数来插入和查询项目。我可以将项目插入表中,但查询表时,它会返回: ValidationException:提供的键元素与架构不匹配。 我的查询功能: 我一直得到这个例外: 自从 1) 我只有一个哈希主键。 2)user_id定义