我有一个使用 .net 核心的身份服务器 4 应用程序。 一切正常。 我想做的是记录用户正在登录的客户端,因为我们有许多第三方应用程序,并希望根据应用程序跟踪用户登录。
当用户点击登录表单时,他们会得到以下内容
http://localhost:5000/account/login?returnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3DClient%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A49000%252Fsignin-oidc%26response_mode%3Dform_post%26response_type%3Did_token%2520token%2520code%26scope%3Dopenid%2520profile%2520testapi%26state%3DOpenIdConnect.AuthenticationProperties%253DEf4ItTF_eWXPU2OTCYP3CqKsds3ywXrsYSfwxnFQCa-p9LYjfJYPXl6OIJWlKVKAyyN1o_5zeox2Wff5SlXEasQ8r44igT72kaDTzUevTOFwh1pkQyDe9Cwxes3pmFNJJOtet2WRON9XnGkabWtuDYnTbumSqyI4pG_zgb6SsY9A6Fnd-rAPSWFPhsLNVJUXY9PRiw%26nonce%3D636740608058134855.YzdiZmQ2MDYtZmY0Zi00MWZjLTg2NmMtMTIxOGMxMDBlODgxNDZhY2Y1ODQtODNhYi00Yzc4LWIyMDQtYTE2MzhkZWMwYmIy
客户端 ID 在 url 中,我可以看到它来了,尽管一些身份服务器 4 中间正在记录。 我无法弄清楚的是如何从 HttpContext 或其他一些我无法找到的变量中获取它。 我也检查了登录管理器,似乎也找不到它。
有谁知道我在哪里可以找到用户登录时使用的应用程序的客户端 ID?
可以使用IIdentityServerInteractionService
获取此对象包含有关当前授权请求的所有数据(包括 ClientId 属性(AuthorizationRequest
。
var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
var clientId = context.ClientId;