0
我正在使用JS应用程序遍历代码示例,并试图了解如何确保系统安全。 AFIK,身份服务器上的范围提供的秘密必须在令牌传递给资源API服务器以允许访问之后进行验证。Thinktecture Identity Server 3:防止未经授权访问WEB 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,因为在代码中,但用户仍然通过身份验证,我可以访问所有声明。
那么,令牌验证的秘密机制是如何工作的?
除了提供给范围API之外,我们是否还需要在客户端提供一个秘密?
AFAIK秘密不需要验证令牌是可信的,所以可以避免使用它并保持系统安全。如果我需要使用引用令牌,为什么我应该添加密钥,这对整个系统的安全性有什么影响,是否因为web API会再次与发布者进行通信以验证此令牌? – Coding
仅供参考 - API需要与颁发者通信以验证令牌是。 https://leastprivilege.com/2015/11/25/reference-tokens-and-introspection/ – leastprivilege