我正在開發一個使用節儉的系統。我希望客戶身份被檢查和操作被ACL。 Thrift能爲這些提供任何支持嗎?如何通過節儉處理認證和授權?
16
A
回答
13
不是直接。唯一的方法是創建一個身份驗證方法,在服務器上創建一個(臨時)密鑰,然後更改所有方法,以便第一個參數是該密鑰,並且它們還會引發未驗證的錯誤。例如:
exception NotAuthorisedException {
1: string errorMessage,
}
exception AuthTimeoutException {
1: string errorMessage,
}
service MyAuthService {
string authenticate(1:string user, 2:string pass)
throws (1:NotAuthorisedException e),
string mymethod(1:string authstring, 2:string otherargs, ...)
throws (1:AuthTimeoutException e, ...),
}
我們用這種方法和我們的鑰匙保存到一個安全的memcached實例與30分鐘超時鍵把一切都「活潑」。預計收到AuthTimeoutException
的客戶將重新授權並重試,並且我們有一些防火牆規則來阻止強力攻擊。
1
類似自動化和權限的任務不被視爲Thrift的一部分,主要是因爲這些東西(通常)更多地與應用程序邏輯相關,而不是一般的RPC /序列化概念。 Thrift現在支持的唯一的東西是TSASLTransport
。我自己也不能多說這個,只是因爲我從來沒有覺得需要使用它。
另一種選擇可能是利用THeaderTransport
,不幸的是在編寫本文時只能用C++實現。因此,如果您打算使用其他語言,則可能需要投入一些額外的工作。不用說,我們接受貢獻......
0
有點晚(我想很晚),但幾年前我已經修改了Thrift源代碼。
剛剛爲此提交了一張帶有修補程序的票據https://issues.apache.org/jira/browse/THRIFT-4221。
看看那個。基本上建議是添加一個「BeforeAction」鉤子來完成。
例Golang差異
+ // Called before any other action is called
+ BeforeAction(serviceName string, actionName string, args map[string]interface{}) (err error)
+ // Called if an action returned an error
+ ProcessError(err error) error
}
type MyServiceClient struct {
@@ -391,7 +395,12 @@ func (p *myServiceProcessorMyMethod) Process(seqId int32, iprot, oprot thrift.TP
result := MyServiceMyMethodResult{}
var retval string
var err2 error
- if retval, err2 = p.handler.MyMethod(args.AuthString, args.OtherArgs_); err2 != nil {
+ err2 = p.handler.BeforeAction("MyService", "MyMethod", map[string]interface{}{"AuthString": args.AuthString, "OtherArgs_": args.OtherArgs_})
+ if err2 == nil {
+ retval, err2 = p.handler.MyMethod(args.AuthString, args.OtherArgs_)
+ }
+ if err2 != nil {
+ err2 = p.handler.ProcessError(err2)
相關問題
- 1. .Net授權/認證理念
- 2. 通過AJAX處理認證?
- 3. asp.net認證和授權
- 4. Websockets(Socket.io)和認證/授權
- 5. Django-Tastypie:認證和授權
- 6. Java Web認證和授權
- 7. Java認證和授權
- 8. Strongloop的授權和認證
- 9. 認證,授權和會計?
- 10. SVN認證和授權
- 11. BoilerplateJS:處理授權和認證的推薦方式
- 12. 處理跨平臺用戶認證和授權的策略
- 13. 通過證書授權
- 14. 通過JWT進行應用程序認證和授權
- 15. Laravel授權認證
- 16. REST認證/授權
- 17. 離子驗證如何通過組和權限處理訪問
- 18. MVVM/ViewModels和處理授權
- 19. 如何通過阿帕奇節儉
- 20. 阿帕奇節儉和多處理器/處理器
- 21. rails - 認證,授權和審計confoussion
- 22. 定製jackrabbit認證和授權
- 23. WCF用戶認證和授權
- 24. 播放2認證和授權模塊
- 25. Cas認證和數據庫授權
- 26. Web API認證和授權(OAuth)
- 27. WCF服務安全認證和授權
- 28. 中央認證和授權系統
- 29. Web API:授權或/和認證
- 30. ASP.Net MVC聲明授權和認證
您以明文形式通過網絡發送的密碼生成的? – JensG 2013-08-25 13:15:50