我正在尝试以ResourceOwnerPassword授予类型实现注销功能。根据我的理解,在注销时,我需要调用令牌撤销端点,该端点实际上将撤销访问令牌。令牌吊销仅适用于参考令牌,因为无法撤销JWT令牌。由于将accesstokentype更改为AccessTokenType的某种原因。参考,身份服务器停止工作并开始引发内部服务器错误。
我已经阅读了IdentityServer4官方文档。据我了解,我正确地使用了每一点,但是由于某种原因,服务器在更改accesstokentype时引发内部服务器错误。当我将accesstokentype改回AccessTokenType.Jwt时,它绝对可以正常工作。但是显然我需要更改此类型才能实现令牌吊销。
{
ClientId = SecurityOptions.ISClientId,
AllowedGrantTypes =
GrantTypes.List(GrantType.ResourceOwnerPassword),
AllowedScopes = requiredScope,
ClientSecrets =
{
new Secret(SecurityOptions.ISClientSecret.Sha256())
},
AccessTokenType = AccessTokenType.Reference,
AlwaysIncludeUserClaimsInIdToken = true,
AccessTokenLifetime = 86400,
IdentityTokenLifetime = 86400,
AlwaysSendClientClaims = true,
Enabled = true,
}
var identityServerValidationOptions = new IdentityServerAuthenticationOptions
{
Authority = config.SecurityOptions.ISAuthority,
AllowedScopes = requiredScope,
ApiSecret = config.SecurityOptions.ISClientSecret,
ApiName = config.SecurityOptions.ISRequiredScope,
AutomaticAuthenticate = true,
SupportedTokens =
dentityServer4.AccessTokenValidation.SupportedTokens.Both,
AutomaticChallenge = true,
RequireHttpsMetadata = requireHttpsMetadata,
};
app.UseIdentityServerAuthentication(identityServerValidationOptions);
在设置正确的类型时,它应该返回参考标记。但是会抛出内部服务器。让我知道是否需要添加其他代码。