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

时间:2018-10-02 07:15:35

标签: c# asp.net asp.net-core asp.net-identity identityserver4

我有一个使用.net核心的Identity Server 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中,尽管某些Identity Server 4中间正在记录日志,但我可以看到它的到来。我不能弄清楚的是如何从HttpContext或我找不到的其他变量中获取它。我也检查了signinmanager,似乎也找不到它。

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

1 个答案:

答案 0 :(得分:5)

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

var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
var clientId = context.ClientId;