2009-08-23 138 views
1

我已經實現了一個WCF服務,該服務公開了Windows窗體客戶端使用的操作。在該服務中,我使用了基於聲明的授權和自定義的AuthorizationPolicy,其中我在操作代碼運行之前根據主體標識插入了自定義的聲明集。然後,這些操作需要Claimset中的某些聲明才能運行。在客戶端獲取聲明

因此,鑑於此,在客戶端上獲取自定義索賠集的最佳方式是什麼?我需要這樣做,以便客戶端可以根據授權策略執行啓用或禁用按鈕等操作。理想情況下,客戶端在調用任何操作(比如表單加載)之前需要這些信息。那麼,我是否創建了一個特殊的操作,返回一個Claimset對象,填充了客戶端可以用於UI決策的聲明?還是有更好的內置模式?

回答

1

我們這樣做是對服務器的兩次調用。

第一個是:用戶是否有權利。在我們的例子中,我們發送一份權利列表,並返回列表,其中每個「權利」標有真或假。

客戶端使用此信息繪製UI。

當實際的呼叫進入時,我們重新檢查用戶是否有權進行呼叫,以防有人通過UI。

+0

謝謝設拉子。因此,評估索賠的呼籲是你實施的 - 有沒有一種內置的方式來做到這一點?我最終做了類似的事情,除了我創建的服務方法返回該調用的整個ClaimSet。這樣,客戶端可以緩存服務的ClaimSet,並且可以隨時評估本地需要的任何內容,而無需進行額外的服務調用。 – 2009-09-06 14:31:02

+0

是的,評估索賠的電話是我們實施的。 – 2009-09-06 14:38:36