2012-02-22 30 views
1

我有兩個程序,一個使用外部STS(Google,Facebook等)登錄用戶並返回用戶安全訪問類型的「登錄」程序。然後,我希望將這些信息發送給一個單獨的程序,該程序需要該安全訪問權限並根據該權限授予用戶特權。跨程序發送自定義ACS聲明的最佳方式是什麼?

發送該信息的最佳方法是什麼?

我已閱讀了有關自定義授權管理器服務的一些內容,但我不確定這是否是我需要的。是否可以通過POST安全信息,並且web.config將其轉化爲索賠?我應該製作一個新的令牌併發送該令牌嗎?

我絕望地迷路了。如果有人可以在網上某個地方提供有用的教程,那將非常感激(因爲我的搜索引擎只能找到冗長的文章,要麼比我需要的要多得多,要麼少得多)。

特定的代碼片段將使我的一天。

謝謝!

編輯:我試圖避免使登錄系統進入STS。但我開始覺得我需要。 STS和依賴方之間有一些中途點嗎?就像一個可以產生自己主張的依賴方一樣?

+0

你有兩個不同的應用程序有這個原因嗎? – 2012-02-22 20:30:36

+0

基本上,我們試圖將代碼清晰度原因的登錄服務與應用程序的實際大部分分開。 – 2012-02-22 21:38:48

回答

1

您有幾種選擇:

  1. 最簡單的一種是ClaimsAuthorizationManager,這可能是你在找什麼。 http://msdn.microsoft.com/en-us/library/ee748497.aspx CAM是在您的應用程序驗證從ACS接收的安全令牌後運行的ASP.NET身份驗證管道中的一個步驟。以下是定義自定義授權邏輯的位置,您可以將其他聲明添加到交付給yor應用程序的IClaimsPrincipal中。例如,您可以在一個共享庫中實現您的CAM,而不需要在服務中集中授權邏輯。

  2. 如果你的授權規則很簡單,即,你不是在查詢任何外部用戶屬性存儲設備,那麼一種選擇是使用ACS聲明轉換規則來做到這一點。然後你的應用程序會直接使用ACS發佈的令牌。 http://msdn.microsoft.com/en-us/library/gg185955.aspx

  3. 但是如果你的架構絕對需要一個單獨的登錄服務來消費令牌並用用戶屬性等填充新的令牌,那麼它將需要是STS。構建你自己的STS可能會很棘手,但是有預製的STS可以做到這一點。例如,如果您的應用程序位於AD域中,ADFS 2.0將是理想的選擇,因爲它與AD和ACS緊密集成,並且它具有強大的聲明轉換功能。

相關問題