android登录按钮和远程web登录在PHP ZF2


android sign in button and remote web login in PHP ZF2

我搜索了一下,我只找到了如何在android应用程序上创建登录按钮的文档,或者如何在web应用程序上创建登录按钮。

我的场景是,android应用程序检索信息从我的网站使用get/post http请求和获取json数据。

我有一个工作的android登录按钮在我的android应用程序。

问题是,当我想使用get/post请求从我的网站检索信息时,我应该发送什么信息,以便网站知道哪个用户正在检索该信息,并且该用户已登录?

我知道我不能只发送谷歌用户id,因为这是不安全的,很容易被黑客攻击。我猜我需要发送某种访问令牌,并在网站上解析该访问令牌,以知道它是哪个用户。但我到底需要做什么呢?

我的客户端是PHP与ZendFramework 2和ZfcUser与scn-social-auth谷歌登录。

如能提供有关此问题的任何信息,我将不胜感激。

谢谢

在我之前的员工项目中,我已经实现了Zend框架的Api模块(它是版本1,但版本2是相同的)。

基本上,我已经实现了OAuth协议 1.0 (rfc在https://www.rfc-editor.org/rfc/rfc5849),这是一个非常强大的方式来提高一个通用客户端(Android, iOS, Mac OSX, Windows Phone,…)之间的连接安全性。和web服务。

简而言之,它包括强制https协议(我希望你在https中工作)签署所有客户端get/post请求与基本OAuth参数(如oauth_version,oauth_token,…(在rfc中有解释),以避免MITM和代理更改请求。使用这种方法,我已经创建了一个特定的表,其中存储请求和访问令牌。

:

  • 客户端有消费者密钥和消费者秘密
  • 服务器具有相同的消费者密钥和消费者秘密
  • OAuth将使用该对对验证连接
  • 客户端获取"请求令牌";从服务器
  • 客户端通过OAuth工作流执行普通用户名和密码登录到服务器
  • 客户端获得访问令牌(如果登录成功),将被存储在令牌db表中,并将用于检查该设备上的用户是否登录并因此被授权使用该服务(因此您可能还需要一个设备指南)

你可以找到关于如何实现你自己的OAuth协议的很好的指导方针和好的github项目(也可以参见像Dropbox或Twitter的开发者部分,关于他们如何使用OAuth的服务)。考虑一下,一旦实现,您显然可以自定义您的OAuth协议,使用额外的控件和令牌(我对一些自定义令牌使用了AES-256加密和RSA 2048位加密,并且在OAuth工作流预期的前一步中,还使用接收到的密钥组合加密登录的用户名和密码)。

最后,您可以使用自定义令牌将客户端连接到您的web服务,因此,一旦认证,您可以使您的web服务与google服务交互,并始终通过您的网站返回信息给客户端

希望有所帮助

如果用户登录服务器与您想要检索信息的服务器相同,则可以使用sessionId作为令牌。

1。认证完成后,服务器将userId存储在会话中2.服务器使用session_id()获取sessionId,返回给android客户端3.在android客户端http请求中添加?PHPSESSID=sessionId参数。4.服务器从会话中获取userId

session_start()根据GETPOST请求传递或cookie传递的会话标识符创建会话或恢复当前会话

您可以添加GET参数PHPSESSID到任何请求的url。

$manager = 'Zend'Session'Container::getDefaultManager();
//$manager = new 'Zend'Session'SessionManager();
$PHPSESSID = $manager->getId();