如何在OpenIddict中获取注销端点中的client_id?

问题描述 投票:0回答:1

我正在尝试获取有关发起注销的客户端的信息(例如 ClientId 和显示名称)。

但是我无法从请求中获取它。

这是客户端应用程序中的注销操作:

[Route("/logout")]
[HttpGet]
public IActionResult LogOut()
{
    return SignOut(new AuthenticationProperties
    {
        RedirectUri = "/status"
    }, CookieAuthenticationDefaults.AuthenticationScheme, OpenIdConnectDefaults.AuthenticationScheme);
}

从 OpenIddict 服务器中注销端点检索到的 HTTP 请求中,ClientId 为 null:

HttpContext.GetOpenIddictServerRequest().ClientId; // Null

但这些参数是随请求一起发送的:

post_logout_redirect_uri
id_token_hint
state

有没有办法在注销请求中包含 ClientId?在规范中(https://openid.net/specs/openid-connect-rpinitied-1_0.html#RPLogout)它是可选的,所以也许可以在某处启用/禁用它?

asp.net openid-connect openiddict
1个回答
0
投票

我的建议是使用 OpenIddict 客户端,它实现了 RP 发起的注销规范的最新草案,并将为您发送

client_id
参数。您可以在这里看到它的实际效果:https://github.com/openiddict/openiddict-samples/tree/dev/samples/Velusia/Velusia.Client

或者,如果您更喜欢使用 MSFT OIDC 处理程序,则可以使用其事件模型(更具体地说是

OpenIdConnectEvents.OnRedirectToIdentityProviderForSignOut
事件)来覆盖用户在触发注销时重定向到的 URL。

© www.soinside.com 2019 - 2024. All rights reserved.