Symfony2 - 没有会话cookie的有状态API密钥身份验证

时间:2014-11-03 10:42:44

标签: php api symfony session

我在本文中使用Symfony进行API密钥身份验证:

http://symfony.com/doc/current/cookbook/security/api_key_authentication.html

它很好地解释了身份验证部分,但似乎并没有解释请求之间的状态如何在正常会话之外工作。

  

但在某些情况下(如OAuth流程),可能会发送令牌   只有一个请求。在这种情况下,您需要对用户进行身份验证   并将该身份验证存储在会话中,以便用户可以访问   每次后续请求都会自动登录。

这是有道理的但如何用户在后续请求中链接回会话,如果只在第一个提供令牌?我无法使用会话cookie,因为CORS限制不允许我这样做。

我基本上想要实现的是一个API,我可以将登录凭据POST,以换取允许我将请求链接回会话的访问令牌。

任何人都可以帮助填补一些空白,或建议更好的方法吗?

1 个答案:

答案 0 :(得分:0)

  

这是有道理的,但如果只在第一个提供令牌,用户如何在后续请求中链接回会话?

如果您使用本机会话处理程序,只要您在Symfony中请求会话,您的会话和会话ID以及会话cookie就会由PHP的会话处理程序自动发送到客户端。

  

我无法使用会话Cookie,因为CORS限制不允许我这样做。

然后,您无法使用仅在开始时(第一个请求)提供安全密钥的身份验证机制,而不会在后续请求中发送任何其他api密钥。

  

我基本上想要实现的是一个API,我可以将登录凭据POST,以换取允许我将请求链接回会话的访问令牌。

然后完成链接文档正在做的事情。为接受凭证并返回api密钥的每个人提供额外的路由(不受保护)。然后在所有后续请求中使用该api密钥,如链接文档中所述。