c# - 无法使用 endsession API 从身份服务中注销
问题描述
我正在执行 GET 到
GET https://localhost:44301/connect/endsession?id_token_hint=eyJhbGciO...GzHCPw
正如EndSession 端点的文档中所建议的那样。
它似乎(在某种程度上)有效,因为我在重定向到的方法中遇到了断点。
[HttpGet("logout")]
public async Task<IActionResult> LogOut(
[FromQuery] string id_token_hint,
[FromQuery] string post_logout_redirect_uri,
[FromQuery] string session,
[FromQuery] string logoutId)
{
LogoutRequest context = await InteractionService
.GetLogoutContextAsync(logoutId);
...
}
在这里,我得到了一个值logoutId
(除非我跳过传递身份令牌,结果 i null
),而其他变量没有设置,保持为null
. 起初,我很高兴看到事实context
并非如此null
。然而,我很快就知道它的设置很差,尽管遵循了一些有效的方法。
我可以看到客户的姓名和 ID(这似乎是正确的)。但是,除了包含零个元素null
的数组之外,其他所有内容都除外。Parameters
我确保传递身份令牌,而不是访问令牌。我还尝试了带有文档中描述的所有参数的完整版本(尝试在我的配置和其他配置中提到的各种重定向 URL)。然而,同样的(错误)行为随之而来。
GET https://localhost:44301/connect/endsession
?id_token_hint=eyJhbGciO...GzHCPw
&post_logout_redirect_uri=https://get_the_duck.off
&session=1337
由于我得到了突破性的打击并获得logoutId
了交互服务可解析的一些价值,我觉得它连接正确(这是预期的,因为这样的安全性按预期工作)。但是,我的应用程序似乎是一个跟踪者,只是不会让他们离开,可以这么说。我怀疑,文档没有提到一些微小的细节(或者在我不理解的公式中模糊了)。(谷歌搜索没有给出任何我认为相关的内容。)
努力证明(以及一堆关于安全性的博客,并非专门针对注销)。