我有一个简单的 Web api 项目,如下所示:
[Authorize]
[Route("Get")]
public ActionResult<string> SayHello()
{
return "Hello World";
}
我正在尝试用邮递员测试它。请按照此处的步骤操作:https://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-testing-your-authorization-server-with-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 用于生成令牌的名称不同 (
由于这只是为了测试,我设置了ValidateIssuer
为假。
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)