如何在登录流程中查找客户端ID

DaI*_*mTo 2 c# asp.net asp.net-identity asp.net-core identityserver4

我有一个使用.net核心的Identity Server 4应用程序.一切都很好.我想做的是记录用户登录的客户端,因为我们有许多第三方应用程序,并希望根据应用程序跟踪用户登录.

当用户点击登录表单时,他们会得到以下内容

HTTP://本地主机:5000 /帐户/登录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中,虽然一些Identity Server 4中间正在记录,但我可以看到它.我无法弄清楚如何从HttpContext或其他一些我无法找到的变量中获取它.我也检查过signinmanager,似乎也找不到它.

有谁知道我在哪里可以找到用户登录的应用程序的客户端ID?

use*_*336 6

您可以使用IIdentityServerInteractionService获取AuthorizationRequest此对象包含有关当前授权请求的所有数据,包括ClientId属性.

var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
var clientId = context.ClientId;
Run Code Online (Sandbox Code Playgroud)

  • 对于 IdentityServer 4 v4.1.1,您应该使用 `var clientId = context.Client.ClientId;` (3认同)