URL已阻止:此重定向失败,因为重定向URI未在应用的客户端OAuth设置中列入白名单?

时间:2017-04-13 05:41:02

标签: facebook azure azure-web-sites facebook-apps

我按照https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-how-to-configure-facebook-authentication链接设置了Facebook登录信息。

https://developers.facebook.com/apps中,“有效OAuth重定向URI”具有以下URI

https://myapp.azurewebsites.net/.auth/login/facebook/callback 

但是,它仍然会出错?

  

网址已阻止:此重定向失败,因为重定向URI未在应用的客户端OAuth设置中列入白名单。确保启用了客户端和Web OAuth登录,并将所有应用程序域添加为有效的OAuth重定向URI。

更新的 添加了https://myapp.azurewebsites.net/signin-facebookhttps://myapp.azurewebsites.net/.auth/login/facebook/callback。现在该网站出现了错误

A claim of type 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier' or 'http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider' was not present on the provided ClaimsIdentity. To enable anti-forgery token support with claims-based authentication, please verify that the configured claims provider is providing both of these claims on the ClaimsIdentity instances it generates. If the configured claims provider instead uses a different claim type as a unique identifier, it can be configured by setting the static property AntiForgeryConfig.UniqueClaimTypeIdentifier.

@Html.AntiForgeryToken()

中的d:\home\site\wwwroot\Views\Account\_ExternalLoginsListPartial.cshtm

更新的 在global.asax中添加了followign行,上面的错误消失了。

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;

但是,它只显示以下带有https://myapp.azurewebsites.net/.auth/login/done#_=_网址的消息框。

You have successfully signed in
-> RETURN TO THE WEBSITE

单击该链接将返回登录屏幕。 https://myapp.azurewebsites.net/(不需要授权)代替https://myapp.azurewebsites.net/event。键入https://myapp.azurewebsites.net/event将再次显示登录页面。 (重定向到https://myapp.azurewebsites.net/Account/Login?ReturnUrl=%2Fevent

1 个答案:

答案 0 :(得分:2)

这是关于Azure App Service中的身份验证和授权的官方tutorial

  

应用服务身份验证/授权是一项功能,可为您的应用提供登录用户的方式,以便您不必更改应用后端的代码。它提供了一种简单的方法来保护您的应用程序并使用每个用户的数据。

您可以在https://myapp.azurewebsites.net/.auth/login/facebook浏览器进行登录。

  

网址已阻止:此重定向失败,因为重定向URI未在应用的客户端OAuth设置中列入白名单。确保启用了客户端和Web OAuth登录,并将所有应用程序域添加为有效的OAuth重定向URI。

您可以利用fiddler捕获网络包以检查您的Facebook登录处理,如下所示:

enter image description here

注意:确保已将上述redirect_uri添加到有效OAuth重定向URI HTTP HTTPS 可能是原因。

此外,如果您使用中间件UseFacebookAuthentication来验证使用Facebook的用户,我认为您需要将http(s)://myapp.azurewebsites.net/signin-facebook添加到有效的OAuth重定向URI ,或者您可以尝试使用以下代码:

app.UseFacebookAuthentication(new FacebookAuthenticationOptions()
{
    AppId = "{your-app-id}",
    AppSecret = "{your-app-secret}",
    CallbackPath = new PathString("/.auth/login/facebook/callback")
});

<强>更新

我跟着这个tutorial关于在ASP.NET MVC5中使用OWIN处理Facebook身份验证,我发现我无法检索已记录的facebook用户信息,returnUrl无法正常工作。经过一些试验,我发现Facebook对图API的强制升级从v2.2升级到v2.3如下:

Facebook Graph API,Changes from v2.2 to v2.3

  

[Oauth访问令牌]格式 - 当您交换 access_token的代码时返回的https://www.facebook.com/v2.3/oauth/access_token的响应格式现在返回有效的JSON而不是URL编码。此回复的新格式为{&#34; access_token&#34;:{TOKEN},&#34; token_type&#34;:{TYPE},&#34; expires_in&#34;:{TIME}}。我们使此更新符合RFC 6749的第5.1节。

您需要将Microsoft.Owin.Security.Facebook升级到3.1.0,或者需要实施此BackchannelHttpHandler中提到的issue