2014-05-06 44 views
1

背景: 我的公司在Play Framework 2.2中開發了一個REST API,我們使用Play的內置身份驗證,使用簽名cookie作爲安全性。我們的應用程序分成多個Play實例,共享相同的application.secret。這使我們能夠在Play的所有實例中輕鬆讀取會話cookie。如何重用Node.js中由Play Framework 2.2設置的簽名cookie?

問題: 現在我們在遷移REST的API來Node.js的一些地區的過程中,想用相同的會話cookie存在(有相同application.secret)來檢測,如果用戶是否登錄。我搜查了互聯網,我沒有發現任何關於這個話題的內容。

問題: 那麼,有可能嗎?它被認爲足夠安全嗎?還是需要遷移到另一種身份驗證方法?

回答

1

的cookie被編碼在CookieBaker:

https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/mvc/Http.scala#L430

與HMAC-SHA1簽名使用Crypto.sign:

https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/play/api/libs/Crypto.scala#L98

你必須應用祕密大概的Node.js有相同的簽名算法,所以你應該很好走。

+0

謝謝!我設法用Node.js中的Crypto模塊通過使用下面的代碼行來解決它。這將生成給定cookie的數據部分的簽名。數據部分必須先解析。 'crypto.createHmac('sha1',「APPLICATION_SECRET」)。update(「DATA_PART_OF_COOKIE」)。digest('hex')' – freelm

相關問題