【问题标题】:Restricting AddJwtBearer from validating ID Tokens in .net core 3.1限制 AddJwtBearer 在 .net core 3.1 中验证 ID 令牌
【发布时间】:2021-01-29 03:50:41
【问题描述】:

我在 .net core 3.1 应用程序中实现了令牌验证,如下所示:

        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
        {
            options.Authority = Configuration["AuthorityUrl"];
            options.Audience = Configuration["Audience"];
            options.TokenValidationParameters = new TokenValidationParameters
            {
                NameClaimType = "preferred_username"
            };
        });

我现在的主要问题是安全威胁,我相信如果用户通过 ID 令牌,则身份验证成功通过,这是错误的,因为资源服务器应该只接受访问令牌。这种行为是否正确?如果是,如何将验证限制为仅访问令牌。

【问题讨论】:

    标签: .net-core oauth-2.0


    【解决方案1】:

    您的 API 的工作是验证令牌的属性 - API 通常配置有以下第 2 项和第 3 项的固定值:

    • 签名
    • 发行人
    • 观众
    • 到期
    • 范围

    如果您检查受众(并且应该),使用 id 令牌自然会失败 - 典型值如下所示:

    • 访问令牌的受众 = api.mycompany.com
    • ID 令牌的受众 = mywebclientid

    API 还应该检查所需的范围 - 并且授权服务器不包括 id 令牌中的范围 - 因为范围仅由 API 用于保护数据区域。

    此外,一些提供商会在令牌中提供声明以告诉您其类型,尽管这是特定于供应商的。例如,Curity 提供“目的”声明 - 请参阅 example at the end f this document

    【讨论】:

    • 你说得对,我也使用了 curity 2 年,它的目的是帮助我检测但不能检测其他提供商。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2021-06-27
    • 2021-10-19
    • 1970-01-01
    • 2019-04-14
    • 2019-03-23
    • 2020-02-05
    相关资源
    最近更新 更多