访问令牌有两种形式 - 自包含或引用。
JWT令牌将是一个自包含的访问令牌 - 它是一个带有声明和过期的受保护数据结构。一旦API了解了密钥材料,它就可以验证自包含的令牌,而无需与发行者进行通信。这使得JWT难以撤销。它们将一直有效,直到它们过期。
使用引用令牌时 - IdentityServer会将令牌的内容存储在数据存储中,并且只会将此令牌的唯一标识符发回给客户端。然后,接收此引用的API必须打开与IdentityServer的反向通道通信以验证令牌。
您可以使用以下设置切换客户端的令牌类型:
client.AccessTokenType = AccessTokenType.Reference;
IdentityServer提供了OAuth 2.0内省规范的实现,该规范允许API取消引用令牌。您可以使用我们的专用内省处理程序 或使用身份服务器身份验证处理程序,它可以验证JWT和引用令牌。
内省端点需要身份验证 - 因为内省端点的客户端是API,您可以在以下位置配置秘密ApiResource
:
var api = new ApiResource("api1")
{
ApiSecrets = { new Secret("secret".Sha256()) }
}
有关如何为API配置IdentityServer身份验证中间件的详细信息,请参阅此处。