在我的
我注意到当
IdentityServer4
项目中,我实现了 IProfileService
。在使用 Implicit 和 Hybrid 流时,人类用户通过登录网页成功验证后,IsActiveAsync
方法会被调用多次。我注意到当
context.Caller
是以下值之一时,它会被调用:
AuthorizeEndpoint
(带有用户的声明)AuthorizationCodeValidation
(带有用户的声明)AccessTokenValidation
(不带用户的声明)
context.IsActive = false
。当这种情况发生时,用于访问登录页面的 Web 浏览器会被重定向回登录页面,而没有任何错误消息或原因信息。用户会困惑为什么他们成功验证但仍提示重新登录。也没有添加任何新的查询字符串参数。
IdentityServer4
日志会显示原因:
现在,假设我的[23:16:40 Information]
IdentityServer4.ResponseHandling.AuthorizeInteractionResponseGenerator
Showing login: User is not active
IsActive = false
代码并不是一个错误,而实际上是按设计(例如,在不同 OAuth/OpenIDConnect HTTP 请求之间,用户帐户确实已被禁用),那么我该如何确保向用户和/或客户端软件呈现此消息?