我正在使用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之外,我们是否还需要在客户端级别提供秘密?
答案 0 :(得分:1)
范围上的秘密用于与内省端点进行通信。
如果令牌是引用令牌,或者在令牌验证中间件上将验证模式显式设置为ValidationEndpoint
,则使用内省。