Auth0授权者拒绝服务中的JWT令牌 - “jwt issuer invalid.expected:https://myservice.auth0.com”

时间:2018-03-21 15:16:41

标签: javascript aws-lambda aws-api-gateway auth0

我正在阅读教程,将auth0设置为此处列出的AWS的API网关授权程序:https://auth0.com/docs/integrations/aws-api-gateway/custom-authorizers

我在这里使用推荐的授权人:https://github.com/auth0-samples/jwt-rsa-aws-custom-authorizer

唯一的修改是配置文件。

但是,在测试授权程序功能时,我收到以下错误:

invoke

MYSERVICE是我设置的auth0 api。这很令人困惑,因为我通过这种方法获得了jwt令牌:

{"name":"JsonWebTokenError","message":"jwt issuer invalid. expected: https://MYSERVICE.auth0.com"}

生成的令牌可以加载到https://jwt.io/的调试工具中,并将iss字段报告为https://MYSERVICE.auth0.com

enter image description here

是否存在可能导致此问题的错误配置?

2 个答案:

答案 0 :(得分:5)

在阅读完问题之后浏览整个教程,这对我有用(最近已经完成了)。

不清楚,但是根据您报告的错误消息,预计发布者最终没有尾随/

然而,我的绝对是DID那样的。这是来自JWT.IO的一个正在运行的令牌的屏幕截图。

enter image description here

可以简单地发送API(使用邮递员)并将其作为授权承载{{token}}标头附加。使用教程的api(AWS petshop),收到输出:

[
    {
        "id": 1,
        "type": "dog",
        "price": 249.99
    },
    {
        "id": 2,
        "type": "cat",
        "price": 124.99
    },
    {
        "id": 3,
        "type": "fish",
        "price": 0.99
    }
]

有助于查看您的JWT令牌issaud(受众群体)值。

答案 1 :(得分:0)

聚会晚了一点,但是当我设置自定义域并收到相同的错误时,这对于我的Blazor WASM ASP.Net Core 3.1 Web API项目是有效的。

对我来说,解决方法是在Web服务应用程序的Startup.cs类中设置TokenValidationParameters.ValidIssuer = [MY_CUSTOM_DOMAIN]。

public void ConfigureServices(IServiceCollection services)
{
  services.AddAuthentication(options =>
  {
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  })
  .AddJwtBearer(options =>
  {
    options.Authority = Configuration[“Auth0:Authority”];
    options.Audience = Configuration[“Auth0:ApiIdentifier”];
    options.TokenValidationParameters.ValidIssuer = Configuration[“Auth0:Issuer”];
  });
}

这是我的服务器的appsettings.config:

{
  “AllowedHosts”: “*”,
  “Auth0”: {
    “Authority”: “[AUTH0_TENANT_DOMAIN]”, (i.e. https://prod-mydomain.us.auth0.com)
    “Issuer”: “[MY_CUSTOM_DOMAIN]”, (i.e. https://login.mycustomdomain.net/)
    “ApiIdentifier”: “[MY_API_DOMAIN]” (i.e. https://example.net/api)
  }
}

重要! =>我必须在自定义域的网址中添加结尾的“ /”,例如https://login.mycustomdomain.net/"。通过查看在调用Web服务期间传递的承载令牌(@ jwt.io或jwt.ms)中找到的ISS值,可以验证是否需要尾随“ /”。