2012-07-07 36 views
4

我目前正在开发一个Web应用程序与春季社会和春季安全。在网络应用程序中,特定用户可以使用ProviderSignInController在Facebook上登录。当工作人员成功通过FB认证后,他们也可以通过编程方式与Spring Security一起登录我的本地Web应用程序。这个概念改编自spring-social-showcase。然后,Spring Social允许经过身份验证的用户创建事件,这些事件也是在Facebook页面上创建的。Android的Facebook登录Spring社会web应用

现在我想写一个android应用程序,使用户能够发布到我的留言板并通过我的web应用程序查看/创建活动。我现在的问题是如何从我的应用程序中实现登录。在我的Web应用程序中,UsersConnectionRepository将Facebook帐户映射到本地帐户。我可以简单地重复使用这些数据,并从我的Android应用程序以与从Web应用程序完全相同的方式登录吗? ProviderSignInControllerhttp://_webapp_/signin/facebook添加了一个路径映射,它将重定向到Facebook登录页面。这可以简单地通过android上的WebView完成吗?

看在spring-android-facebook-client即时通讯困惑。这个例子似乎是手动管理OAuth身份验证。但是我还没有弄清楚,无论这是要走还是另一种实现它的可能性,当后台没有其他Web应用程序已经在管理身份验证时。

欢迎任何反馈。谢谢。

Jeyp

+0

嗨,你有没有找到一种方法,使工作中的移动社会登录? – Ben 2017-05-15 12:42:29

回答

7

现在我想编写一个Android应用程序,使用户能够张贴到我 留言和查看/创建通过我的web应用程序事件。

Android客户端需要一种方法登录到您的Web应用程序才能发布到安全的RESTful端点,而OAuth是一个很好的方法。 Spring Security OAuth是Spring Security的扩展,它可以让第三方移动或Web客户端与您的网站进行交互。

配置好OAuth服务器之后,您可以在Android客户端中使用Spring Social创建自定义提供程序,以建立与您网站的OAuth连接。在这种情况下,您的用户将使用本地凭证向您的网站进行身份验证。一旦连接,您的Android应用程序就可以将事件发布到您的网站中的RESTful端点,并再次使用您的自定义Spring Social API绑定。

在这种情况下,您的用户不会通过Android应用程序向Facebook进行身份验证。这假设他们已经在您的网站上建立了一个帐户并连接到Facebook。事实上,这就是SpringSource参考应用程序的工作原理。

这让我们回到你的问题的前一部分:

当工作人员与FB成功验证,它们编程签署在我的本地Web应用程序与春季安全了。

如果我理解正确,您要求授权您的Android客户端使用Facebook凭据访问您的第三方网站。虽然这当然是可能的,但目前它还不支持Android的Spring Social和Spring。

另一种选择是考虑您的网站的移动版本。这样,Android和其他移动设备就可以使用他们的Facebook凭证,像使用普通浏览器一样简单地登录到您的网站。 UI将更适合移动设备,并且可以消除额外的OAuth服务器/客户端配置的额外复杂性。

最后,解决你的问题的最后一部分。这实际上是与以前的部分分开的问题:

此示例似乎手动管理OAuth身份验证。

主要问题是Spring Social尚不支持资源所有者凭证授予(ROCG)。此功能的添加将简化在Android上为Facebook获取访问令牌的过程,因为您不必处理浏览器重定向。有关更多信息,请参阅此Spring Social issue

由于缺乏ROCG,Spring for Android示例应用程序说明了使用Spring Social获取访问令牌的一种方法。在这种情况下,它是客户端身份验证流程的修改版本。作为参考,Facebook有一个有用的页面描述所有可用authentication methods。成功验证后,webview会重定向到一个url,此时应用程序能够从此url检索访问令牌。

SpringSource正在讨论如何在将来的版本中简化认证并改进Spring Social和Spring for Android之间的整合部分。

+0

感谢您的详细解答!在此期间,我改变了我的网站的行为:我现在使用'ConnectController'将facebook连接到本地用户帐户。作为我网站上的登录机制,我使用基于表单的登录。 – jeyp 2012-07-17 18:15:06

+0

本地用户不再以编程方式登录。目前我正在考虑使用基本身份验证或基于表单的登录从我的Android应用程序到我网站中的RESTful访问点。使用我的网站创建自定义OAuth是否对这两种方法更安全? – jeyp 2012-07-17 18:25:43

+0

请记住,身份验证与授权不同。 OAuth是一种授权方法。要建立OAuth连接,您仍然需要对用户进行身份验证。但是,使用OAuth时,您不会将用户名和密码从客户端传递到服务器,以便向安全端点发送任何请求。此外,通过OAuth,您不会将用户的凭据存储在应用程序中,而只能存储访问令牌。无论使用什么方法,您还应该使用SSL来加密到客户端的Web流量,因为您已经声明安全性非常重要。 – 2012-07-25 19:18:20