【问题标题】:Specifying the "display" query string field for Microsoft.Owin.Security.Facebook's challenge URL为 Microsoft.Owin.Security.Facebook 的质询 URL 指定“显示”查询字符串字段
【发布时间】:2015-02-20 18:47:07
【问题描述】:

我正在使用 Microsoft.Owin.Security.Facebook 3.0.1 NuGet 包将 Facebook 身份验证添加到我的 Web API 2.2 应用程序中。我有这样的代码,当用户尝试登录时,微软的中间件将他们重定向到 Facebook 的 OAuth 对话框,其 URL 如下:

https://www.facebook.com/dialog/oauth?response_type=code&client_id=<omitted>&redirect_uri=<omitted>&scope=&state=<omitted>

我希望生成的 HTTP 302 呈现 Facebook 的特定于弹出式版本的身份验证对话框。 Facebook 的documentation 说我可以将display 查询字符串字段的值设置为popup。不幸的是,微软的 Facebook 中间件中似乎没有 display 的设置。事实上,在反编译内部Microsoft.Owin.Security.Facebook.FacebookAuthenticationHandler 类时,我发现了这段代码:

string redirectUri = this.get_Options().AuthorizationEndpoint + "?response_type=code&client_id=" + Uri.EscapeDataString(this.get_Options().AppId) + "&redirect_uri=" + Uri.EscapeDataString(stringToEscape1) + "&scope=" + Uri.EscapeDataString(stringToEscape2) + "&state=" + Uri.EscapeDataString(stringToEscape3);

似乎无法自定义身份验证处理程序生成的 URL。

我的问题是,有没有人遇到过这个问题并解决了它?我可以在管道的其他地方做些什么来以某种方式将display 添加到 URL 中吗?我需要使用 Facebook 的 OAuth 对话框的弹出版本。

我尝试了一个委托处理程序,我看到它拦截了管道中生成的 HTTP 401,但它没有拦截 HTTP 302。

顺便说一句,在哪里请求这个功能?

【问题讨论】:

    标签: facebook asp.net-web-api2 owin-middleware


    【解决方案1】:

    虽然我认为这个解决方案比我想的更多,但它确实有效。我创建了一个 IIS URL 重写规则,将 &amp;display=popup 附加到任何 HTTP 302 响应,其 Location 标头与 Facebook 的 OAuth 对话 URL 匹配:

    <rewrite>
      <outboundRules>
        <rule name="Append display query string field onto Facebook OAuth dialog redirects" preCondition="HTTP 302">
          <match serverVariable="RESPONSE_Location" pattern="^https://www\.facebook\.com/dialog/oauth\?.*" />
          <action type="Rewrite" value="{R:0}&amp;display=popup" />
        </rule>
        <preConditions>
          <preCondition name="HTTP 302">
            <add input="{RESPONSE_STATUS}" pattern="302" />
          </preCondition>
        </preConditions>
      </outboundRules>
    </rewrite>
    

    我不会将此标记为已接受的答案,希望有一个更好的解决方案,不依赖于 URL 重写。

    【讨论】:

      猜你喜欢
      • 2012-01-15
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多