无法使用EndSession API从身份服务注销 [英] Can't sign out from Identity Service using endsession API

查看:36
本文介绍了无法使用EndSession API从身份服务注销的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在执行Get To

获取https://localhost:44301/connect/endsession?id_token_hint=eyJhbGciO...GzHCPw

the docs for EndSession endpoint所示。

它似乎起作用了(在某种程度上),因为我在重定向到的方法中找到了断点。

[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中获得一个值(除非我跳过传递身份令牌,结果是Inull),而其他变量没有设置,保持为null。起初,我很高兴看到context不是null。然而,我很快就知道它设置得很差,尽管我遵循了stuff that work

我可以看到客户的名称和ID(似乎是正确的)。但是,除数组Parameters外,其他都是null,它不包含任何元素。

我已确保传入标识令牌,而不是访问令牌。我还尝试了使用所有参数described in the docs的完整版(尝试了在我的配置和其他配置中提到的各种重定向URL)。然而,同样的(错误)行为也随之而来。

获取https://localhost:44301/connect/endsession
?ID_TOKEN_HINT=eyJhbGciO...GzHCPw
&;post_logout_redirect_uri=https://get_the_duck.off
&;会话=1337

由于我获得了突破性的命中,并收到了交互服务可解析的logoutId值,我觉得它连接正确(这是意料之中的,因为安全性如预期的那样工作)。然而,我的应用程序似乎是一个跟踪者,可以说就是不让他们走。我怀疑,有一些微小的细节是医生没有提到的(或者在我不理解的表述中模糊了)。(谷歌搜索没有给出我认为相关的任何信息。)

努力的证明(连同一堆关于安全的博客,而不是专门针对注销的)。

推荐答案

如果你查看官方的quickstart,你可以看到他们建议使用首字母Get的组合,然后是Post,中间有一个可选的提示。最后一个Post方法implementation通过调用

await HttpContext.SignOutAsync();

这篇关于无法使用EndSession API从身份服务注销的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆