【问题标题】:OpenID Redirect URI adds a # symbolOpenID 重定向 URI 添加 # 符号
【发布时间】:2021-07-14 12:49:20
【问题描述】:

我在 OneLogin 上配置了一个 OpenID 连接应用程序(不确定提供程序是否重要),并配置了 MFA 后身份验证重定向 uri

http://localhost:4200/LoginResponse.aspx?

我的 LoginResponse.aspx 页面背后的代码获取返回的 id_token 并对其进行处理。

问题是,在我初始重定向到 MFA 登录并成功登录/MFA 验证后,重定向即将到来

http://localhost:4200/LoginResponse.aspx#id_token=12345678987............

注意我的 .aspx 扩展名后面的“#”符号。这破坏了返回的参数字符串,并且不允许我从响应中获取 id_token 的值。

重定向返回后,如果我只是手动将“#”替换为“?”然后回车,我的 LoginResponse.aspx 页面加载正常,并找到 id_token 并使用我的业务逻辑对其进行处理。

我的问题是,我怎样才能让重定向真正返回到“LoginResponse.aspx”?这样我就可以获取参数了。

在我的 OpenID 应用程序中,我尝试了以下选项作为重定向 URI

  • 登录响应
  • Lo​​ginResponse.aspx
  • Lo​​ginResponse.aspx?
  • Lo​​ginResponse.aspx?action=test

最后一个是为了看看我能不能绕过吗?不在那里。但这只是将页面重定向到“LoginResponse.aspx?action=test#id_token=......”所以我再次无法从 URL 中获取“id_token”变量响应/查询字符串。

我只是不知道如何摆脱这个不需要的“#”符号并有一个“?”在我的 .aspx 扩展名之后。

任何帮助将不胜感激!

【问题讨论】:

    标签: asp.net redirect openid-connect


    【解决方案1】:

    我假设您正在使用隐式流程来检索令牌,并且在此流程中,您可以使用 # 取回 URL 中的令牌。添加 # 是为了确保不会将令牌发送回服务器,而只是留在浏览器中。如果它是 #,那么秘密令牌将被发送回服务器并最终出现在各种日志中并产生各种安全问题。

    我不知道您是如何实现客户端的,但是在 OpenID Connect 中,如果您将这个参数“&response_mode=form_post”添加到初始授权请求中,那么您将使用 POST 请求取回令牌。就像这张照片所示:

    PS,我怀疑您是否可以使用 ?而不是#。

    【讨论】:

    • 添加 response_mode 然后从“HttpContext.Current.Request.Form”获取我的响应值有效。非常感谢您的帮助!
    • 太棒了!如果您愿意,请随时将答案标记为已接受!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2019-01-23
    • 2019-09-17
    相关资源
    最近更新 更多