c# - Bearer error="invalid_token", error_description="发行者无效"
问题描述
我有一个简单的 web api 项目,如下所示:
[Authorize]
[Route("Get")]
public ActionResult<string> SayHello()
{
return "Hello World";
}
我正在尝试使用 Postman 对其进行测试。按照此处的步骤操作:https ://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-testing-your-authorization-server-with-postman/
1)发送下面的请求并按预期接收令牌:
2)尝试使用授权令牌发送另一个请求,如下所示:
为什么我会收到 401(未经授权)错误?WWW-Authenticate 响应标头说:Bearer error="invalid_token", error_description="The issuer is invalid"。我正在使用.Net Core 3.1。我已经注释掉了截图中的敏感信息。
从 MVC 应用程序访问时,Web api 按预期工作。
这是启动代码:
services.AddAuthentication("Bearer")
.AddIdentityServerAuthentication(options =>
{
options.Authority = identityUrl; //identityurl is a config item
options.RequireHttpsMetadata = false;
options.ApiName = apiName;
});
解决方案
我遇到了类似的问题。在发送我的请求并使用外部 IP 访问在我的 kubernetes 集群内运行的 Keycloak 实例时,我正在通过 Postman 生成我的令牌。当我在集群中的服务尝试根据权限验证令牌时,它失败了,因为它用于验证令牌的内部服务名称 (http://keycloak) 与 Postman 用来生成令牌的名称 (<external-密钥斗篷IP)。
由于这只是为了测试,我将其设置ValidateIssuer
为 false。
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false
};
推荐阅读
- typescript - 获取集合大小的 Firestore 计费
- javascript - 我想将前一个数字添加到javascript数组中的当前数字?
- python-3.x - 在没有模块的python中计算Pi
- swift - 拒绝邀请后仍显示应用程序徽章图标
- javascript - MongoDB:从单独的文件返回查询
- javascript - 其他非空时需要 Vue 输入
- sql - Create duplicate records based on field value Access
- c# - 使用 C# 扩展 IronPython
- c++ - Boost Deadline Timer 运行时中止调用问题
- ios - 使用径向渐变作为 UIView 的扩展