我有一個自定義的ServiceAuthorizationManager,其中我重寫CheckAccess並驗證作爲URL一部分的自定義身份驗證令牌。我驗證後,我設置了一個GenericPrincipal的Thread.CurrentPrincipal。但是,當請求最終到達我的服務方法時,Thread.CurrentPrincipal就消失了,它不是我在auth管理器中設置的。 怎麼回事?WCF服務授權管理器設置Thread.CurrentPrincipal
3
A
回答
6
我解決這個通過了在我註冊服務AUTH管理服務行爲設置principalPermissionMode =「無」。這應該告訴wcf運行時不要在當前線程中放置任何主體。如果將其設置爲「自定義」,則會覆蓋使用GenericPrincipal設置的任何主體。
1
如果您不希望使用內置機制進行授權,WCF要求通過IAuthorizationPolicy標識當前主體,以便在WCF管道中正確集成。您需要指定'Custom'的PrincipalPermissionMode。
有關詳細介紹請參閱這篇文章:Authorization In WCF-Based Services
相關問題
- 1. WCF通過IHttpModule設置Thread.CurrentPrincipal
- 2. WCF服務授權碼
- 3. WCF RIA服務授權
- 4. 如何授權WCF服務
- 5. 授權失敗/服務/管理
- 6. Ember-CLI - 在HTTP代理服務器上設置HTTP授權頭
- 7. 授權服務器
- 8. WCF - 如何在服務授權管理器之前調用Message Inspector?
- 9. WCF服務管理
- 10. 如何設置服務參考授權?
- 11. 設備上的Android授權服務器
- 12. 執行服務器進行授權管理
- 13. 如何授予MySQL服務器管理權限(SUPER,RELOAD ...)與否?
- 14. 可以從服務器管理HTTP響應頭授權嗎?
- 15. WCF網絡服務定製授權
- 16. WCF服務安全認證和授權
- 17. WCF服務:如何授權用戶
- 18. WCF服務驗證和授權
- 19. WCF REST服務 - 401未授權
- 20. 在Wcf數據服務中授權
- 21. 如何授權用戶在網站上託管的WCF服務
- 22. 沒有管理員權限的WCF服務器
- 23. OAuth 2.0授權服務器
- 24. 管理服務器設計
- 25. WCF命名管道服務設置
- 26. OAuth2授權服務器和Rest服務
- 27. mysql在服務器上設置密碼授權
- 28. 使用Rest服務器擴展CodeIgniter設置授權級別
- 29. Exchange Web服務託管API不授權
- 30. 無法設定授權規則在web.config中的WCF服務
那麼你如何做你提到的自定義auth?這可能使用「None」的PrincipalPermissionMode? –
我在登錄過程中發送一個驗證票,客戶會跟蹤它並在後續服務中使用它。如果authticket無效,我只需從我的ServiceAuthorizationManager實現中返回false。如果有效,我在currrent線程上設置一個通用主體。如果您未將principalPermissionMode設置爲None,那麼您剛剛設置的通用主體將被覆蓋在該行的某處。 – sash