2014-11-14 53 views
4

我是Play新手,想爲我的webapp實現一些身份驗證。使用Spring Security彈出框架?

我已經有了Spring和Spring Security的一些經驗,並且想要使用它,但我不確定這是否合理,因爲Spring Security主要針對ServletAPI。

將Play與Spring Security集成是否有意義?

謝謝。

經過進一步搜索,我發現這個帖子:

https://groups.google.com/d/msg/play-framework/K7l6vHa0UUA/MYDlsaIfJEMJ

這似乎是可能的,但仍然有很多遊戲的具體實現(過濾器等)都要做。

+0

只是好奇,你最終做了什麼?我正在研究同樣的問題 - 尋找一個強大的,經過生產驗證的認證模型,並且遇到了Spring Security,我想知道它是否可以與PlayFramework一起使用。 – costa 2016-12-18 02:33:30

+0

我最終使用了Play的Pac4j庫:https://github.com/pac4j/play-pac4j這是一個非常直接的實現,對我來說非常有用。社區也非常積極和支持。 – olibur 2016-12-19 11:22:57

回答

0

你應該 - 也許 - 看看Deadbolt 2。這是專用的解決方案,所以它會用完。

+3

Deadbolt2僅提供授權部分,您仍然必須實施或找到準備好的解決方案進行身份驗證。 – Serg 2014-11-27 13:46:23

0

是的,它是有意義的使用彈簧安全與戲劇。 Spring安全已經用於很多項目,編寫安全代碼比看起來更難。

你有兩個問題。一個是認證。您需要做一些事情來實現身份驗證。這意味着要麼玩弄遊戲,所以它變成了一個有狀態的容器(但是,在這種情況下,爲什麼還要使用遊戲?),或者彈簧 - 安全 - 網絡和deadbolt很難相互對抗,因此您使用spring進行身份驗證,但與cookie的優點整合在一起,因此您不必將東西存儲在服務器端的會話對象中。儘管如此,我建議您從每個請求的某個位置獲取授權的權限。你想保持會話大小。

安全對象也有一些關於如何去做這件事的好提示。

只要你有一個存儲在線程本地或其他地方的認證對象,春天的授權並不難處理。創建一個稱爲彈簧訪問決定選民在包裝 - 東西像

def handleRequest ... { 
    withAuthorization(<list of roles necessary>) { 
    service code 
    } 
} 

應該做的伎倆。爲了增加效果,當你這樣做時,在threadlocal中添加一個標誌 - 標誌的存在使得在需要授權的測試中編寫斷言變得容易。這是開發者最大的安全問題之一 - 見https://cwe.mitre.org/data/definitions/862.html

希望這有助於。