【问题标题】:Thinktecture Identity Server 3: Client Secrets to protect WEB APIs from unauthorized accessThinktecture Identity Server 3:保护 WEB API 免受未经授权访问的客户端机密
【发布时间】:2017-02-08 07:34:42
【问题描述】:

我正在使用 JS 应用程序遍历代码示例并尝试了解如何确保系统安全。

AFAIK,在将令牌传递给资源 API 服务器以允许访问之后,必须验证身份服务器范围内提供的机密。

因此,在身份服务器上,我们为“api”资源范围设置了一个秘密,例如:

      new Scope
            {
                Name = "api",
                DisplayName = "Access to API",
                Description = "This will grant you access to the API",
                ScopeSecrets = new List<Secret>
                {
                    new Secret("api-secret".Sha256())
                },
                Type = ScopeType.Resource
            },

在资源 API 上,我们必须验证此令牌是否由受信任的颁发者授予:

  // Wire token validation
        app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = "https://localhost:44300",

            ClientId = "api",
            //ClientSecret = "api-secret",
            ClientSecret = "api-secret-changed",

            RequiredScopes = new[] { "api" }
        });

但是,我已经更改了代码中的 ClientSecret,但用户仍然经过身份验证,我可以访问所有声明。

那么,令牌验证的秘密机制是如何工作的?

除了提供给 Scope API 的秘密之外,我们是否还需要在客户端级别提供秘密?

【问题讨论】:

    标签: api access-token identityserver3 thinktecture-ident-server shared-secret


    【解决方案1】:

    作用域上的秘密用于与自省端点通信。

    如果令牌是引用令牌,或者在令牌验证中间件上将验证模式显式设置为 ValidationEndpoint,则使用自省。

    【讨论】:

    • AFAIK 不需要验证令牌是否可信,因此可以避免使用它并保持系统安全。如果我需要使用参考令牌,为什么要添加密钥,这对整个系统的安全性有何影响,是不是因为 web api 将再次与颁发者通信以验证此令牌?
    • 对于参考令牌 - API 需要与颁发者通信以验证令牌是。 leastprivilege.com/2015/11/25/…
    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 2019-06-05
    • 2019-08-16
    • 1970-01-01
    • 2018-05-20
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多