我有一个使用Symfony制作的有状态php Web应用程序,使用cookie来保持登录用户在应用程序中的会话(我一直都是这样工作的,在REST服务方面我真的很新)。
我正在使用这个Web应用程序的业务逻辑制作REST API,以便在不同的环境(目前是Android)中使用它。
为了保护API的私密性,我遵循Symfony cookbook(http://symfony.com/doc/current/cookbook/security/api_key_authentication.html),因此请求通过每个请求的标题中发送的“apikey”进行服务。
目前,这个“apikey”是一个硬编码在我的Android代码中的虚拟字符串。
我最初想要做的事情是在Android上创建一个登录屏幕,向API发送用户名和密码,服务器端将检查这些凭据,如果正确,则向客户端发送一个基于这些凭据的“apikey”,然后在客户端中存储它,并在每个API请求的标题中发送它。
我对这个“apikey”方法有些误解吗?(可能是的,当我写这篇文章时,似乎这个apikey是一个更“静态”的概念)。这个想法不是一种违反REST模式的“有状态”的概念吗?我的意思是,我保留了每个请求都要检查的内容。
我想实现的是在Android中进行登录,在服务器端检查凭据,然后(如果检查通过)让Android应用程序以安全的方式调用API...那么我该如何操作呢?
谢谢你的时间!
我正在使用这个Web应用程序的业务逻辑制作REST API,以便在不同的环境(目前是Android)中使用它。
为了保护API的私密性,我遵循Symfony cookbook(http://symfony.com/doc/current/cookbook/security/api_key_authentication.html),因此请求通过每个请求的标题中发送的“apikey”进行服务。
目前,这个“apikey”是一个硬编码在我的Android代码中的虚拟字符串。
我最初想要做的事情是在Android上创建一个登录屏幕,向API发送用户名和密码,服务器端将检查这些凭据,如果正确,则向客户端发送一个基于这些凭据的“apikey”,然后在客户端中存储它,并在每个API请求的标题中发送它。
我对这个“apikey”方法有些误解吗?(可能是的,当我写这篇文章时,似乎这个apikey是一个更“静态”的概念)。这个想法不是一种违反REST模式的“有状态”的概念吗?我的意思是,我保留了每个请求都要检查的内容。
我想实现的是在Android中进行登录,在服务器端检查凭据,然后(如果检查通过)让Android应用程序以安全的方式调用API...那么我该如何操作呢?
谢谢你的时间!
security.yml
中的http_basic:〜
),然后在Android端,我从登录活动中获取凭据,我将这些凭据编码(在Base64中),然后将其发送到每个请求头中的API。 - jolmos