0

我们一直在使用 servicestack 作为 Web 服务的框架,我们也将其 SSO 与 FB、LinkedIn、GooglePlus 功能一起使用。我们像这样启用它们

Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new FacebookAuthProvider(appSettings), new GoogleOAuth2Provider(appSettings), new TwitterAuthProvider(appSettings), new LinkedInOAuth2Provider(appSettings)}

从 3/27 起,FB SSO 停止在我们的网站上工作,但其他 SSO (如 LinkedIn)工作正常。当我为 facebook SSO 进行调试时,我们正在从 FB 获取 Auth_Code 回我们的服务,但我假设服务器到服务器的通信在传递时失败(代码,秘密)。这只是一个假设,因为 Auth_token 未在会话中设置。如果您知道 FB 在 OAuth 过程中更新了 ServiceStack 未遵循的内容或类似内容,请向我提供该信息链接。

我的假设是错误的“我们正在将 Auth_Code 从 FB 获取回我们的服务,但我假设服务器到服务器的通信在传递时失败(代码,秘密)。这只是一个假设,因为 Auth_token 不是设置在会话中。” 使用提琴手,我可以看到服务器到服务器的通信,用于交换 Auth_Code、Client_Secret 和 Access_Token。我看到了令牌响应。之后,我被带回了我的 ReferralURL。在我的推荐端点中,我得到了 Usersession.ProviderOAuthAccess,它有 Facebook 提供程序,但我没有在其中看到任何令牌信息。这真是一场有趣的追逐。请帮助我有任何其他的想法来测试。

我发现附加信息:从 FB 获取 Access_Token 后,立即调用是由服务堆栈发起的https://avatars.io/facebook/?size=medium 。

https://github.com/ServiceStack/ServiceStack/blob/v4.0.50/src/ServiceStack/Auth/FacebookAuthProvider.cs

在 FacebookAuthProvider.cs 的第 73 行,它调用 OnAuthenticated 函数,该函数在第 171 行调用 OnAuthenticated 函数

https://github.com/ServiceStack/ServiceStack/blob/v4.0.50/src/ServiceStack/Auth/CredentialsAuthProvider.cs

它在文件的第 177 行调用函数 SafeAddMetadata

https://github.com/ServiceStack/ServiceStack/blob/v4.0.50/src/ServiceStack/Auth/AuthMetadataProvider.cs

最后触发这个:“ http://avatars.io/facebook/ {0}?size=medium”.Fmt(tokens.UserName));

这似乎 tokens.username 在我的网络流中是空的。这个问题超出了我的想象。它曾经工作,只是突然停止不知道发生了什么,我们甚至不升级 servicestack 或 servicestack.OAuth 包。

4

0 回答 0