Thinktecture Identity Server 3:客户端秘密保护WEB API免受未经授权的访问

时间:2016-09-29 20:26:32

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

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

AFAIK,在将令牌传递给Resource 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之外,我们是否还需要在客户端级别提供秘密?

1 个答案:

答案 0 :(得分:1)

范围上的秘密用于与内省端点进行通信。

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