如何在TokenIssuedSuccessEvent和UserLoginSuccessEvent中获得子声明

时间:2019-09-03 19:29:18

标签: c# .net-core identityserver4

我正在为SecondClass(int x) : FirstClass(x, "second") { IEventSink实现TokenIssuedSuccessEvent

我可以使用UserLoginSuccessEvent来获取主题ID,但我也想获取发行人。不幸的是,TokenIssuedSuccessEvent.SubjectId声明本身并未在事件中公开。

在浏览IdentityServer代码时,我看到sub确实来自SubjectId行中的ClaimsPrincipal

我当时想我也许可以在SubjectId = response.Request.Subject.GetSubjectId();中使用HttpContextHttpContext.User.Claims获取当前的索赔主体,但是这些索赔为空,所以我猜它没有设置

查看IdentityServer日志时,我可以看到IEventSink正在处理声明。

DefaultClaimsService

如何获得这两个事件的声明,或者至少是2019-09-02 21:34:12 Debug] IdentityServer4.Services.DefaultClaimsService Getting claims for access token for client: SomeClientId TokenIssuedSuccessEvent was received in event sink TokenIssuedSuccessEvent was received in event sink [2019-09-02 21:34:12 Debug] IdentityServer4.Endpoints.TokenEndpoint Token request success. 声明?

0 个答案:

没有答案