2012-08-29 84 views
0

我正在設計(是的,差不多還有設計)一個架構,我們有一個主要服務來完成任務。對用戶進行身份驗證,導入數據並獲得結果等。我們還有一個與之交互的ASP MVC3 UI模塊。這裏的關鍵是,將來它可能是SharePoint或者只是使用該服務的批量導入應用程序,因此它必須謹慎,但現在它是一個ASP MVC3。UI服務〜主要服務驗證

我正在努力決定/讓我的頭是身份驗證。我比SqlProvider更喜歡MembershipProvider。我們是M $房子,所以我很樂意順着這條路走下去。我想要做的是綁定用戶登錄到用戶界面的身份驗證,並通過實際服務調用進行身份驗證。大致有兩種類型的用戶'正常'和'管理',我不能決定最優雅的方式來處理身份驗證。

我真的很喜歡我擁有的東西。由WCF服務提供的SqlProvider以及服務調用的訪問權限都與其相關聯(我需要整理這些內容,因爲當前所有的服務調用都是通過配置而不是按服務合同來鎖定的)。

這個問題是你必須通過明文傳遞用戶名和密碼,並防止你在證書世界 - 我在這裏的研究表明,dev證書是壞的,真正的證書是昂貴的,所以如果真是一種選擇。

問題是:什麼是最好的方法?我想 一種服務, I)進行身份驗證在每次調用,所以你不能把你的東西不允許 - 處理的優雅儘可能 II)是無狀態的,所以我可以縮放/羣集服務。 iii)不在客戶端進行控制,因此可以更換。

的替代我想到的證書什麼的登錄調用返回某種被隨後與其他呼叫一起傳遞和使用自定義的主要供應商認證的令牌服務。這個優點是我可以在UI和服務之間使用windows encyptions,並沿着角色傳遞身份驗證。我想避免做的是在每個呼叫的參數中傳遞u/n詳細信息,因爲這看起來很醜陋。

請幫忙!

回答

0

WCF提供了將自定義字段添加到SOAP標頭的功能,它允許交叉關注,如身份驗證從信息參數&處理稍微更高一級。

但這並非全部。 WCF還允許您加密這些標頭,這將防止它們以明文形式通過電線發送。由Steven Cheng提供的This blog post提供了一個很好的描述,說明如何實現這一點。

Essentually您將創建一個自定義合同行爲,可以輕鬆應用到您的現有服務。

+0

謝謝,真的是思考。我已經做了一些挖掘,並且傳遞安全令牌的想法是一個很好的想法。我懷疑時間會成爲阻礙因素,我最終會做我在這裏提出的建議。它看起來直接添加元數據。 –

+0

很高興幫助。一個到期令牌還偉大工程,你可以只使用一個GUID對於這一點,前提是你要有一個後備存儲服務的所有實例可以驗證對令牌。 – Chris