2017-08-31 47 views
0

我正在實施具有IDP啓動流程的SAML 2.0的SSO。使用第三方IDP不是一種選擇,我們將不得不使用Windows Server 2012R2附帶的ADFS 3.0。 我們有一個CRM工具,用戶使用他們的AD帳戶進行身份驗證。當用戶嘗試訪問另一個系統中的客戶的帳戶詳細信息時,IDP必須傳遞客戶的用戶名(這存儲在SQL服務器數據庫中)。我的問題是,我們有沒有辦法將這些詳細信息包含在我們發送給SP的SAML 2.0響應中。我的理解是,如果我們使用ADFS,我們發送給SP的所有聲明詳細信息都應來自AD。這是不是這樣嗎? 如果沒有,我可以在將代碼(C#)中的SAML 2.0響應中的聲明詳細信息發送給SP之前進行任何控制?我認爲發送SAML 2.0是由ADFS完成的,我的應用程序邏輯無法控制使用ADFS 3.0在SAML 2.0響應中從SQL Server(不從Active Directory)添加聲明詳細信息

編輯:我做了更多的研究,發現這個帖子authentication against ADFS, authorization against sql server這看起來好像是拉取登錄用戶的憑證。我的情況是,我需要根據用戶選擇的賬號從另一個數據庫獲取客戶的用戶信息。是否有辦法做到這一點?

這裏是用例

  1. 內部用戶(用戶)登錄到我們的AD證書
  2. 搜索客戶的CRM應用程序,並找到一個帳號爲客戶
  3. 用戶試圖訪問此用戶的帳戶詳細信息SP
  4. 用戶被帶到SP URL(客戶的用戶名作爲查詢字符串獲得通過)
  5. SP向IDP(I as sume這是 裏面的一個帖子與RelayState和base64編碼
  6. 我應該創建一個Web API來捕獲這個並獲得RelayState並通過WIF卸載它到ADFS嗎?
  7. 如果步驟6是可行的,我可以從ADFS獲得生成的SAML響應,將其加密並將其發回給SP?如果步驟6不可行,ADFS是否將帶有加密數據的SAML響應發送回SP?
  8. 此外,是否有一個需要包裝SAML請求和響應內的網頁sso的表單html元素?

sso_workflow

任何幫助,將不勝感激

回答

1

按照鏈接,你可以從SQL數據庫的授權屬性。

這是通過聲明規則。

沒有什麼能阻止你有一個以上的SQL數據庫,並從每個

這些屬性都添加爲SAML令牌聲明獲得不同的屬性。

您也可以使用正常的聲明規則操作。

+0

謝謝@ nzpcmad.I也想知道我的端點應該接受來自SP的saml 2.0(HTTP POST)請求。此鏈接https://en.wikipedia.org/wiki/SAML_2.0(section SP發佈請求和IDP發帖回覆部分)表示,這個來自SP的請求將是一個

的帖子。我應該創建一個web api端點以從SP捕獲此POST,解壓縮並通過WIF將其卸載到ADFS 3.0?我假設一旦我將它卸載到ADFS 3.0,它將加密SAML 2.0響應(如果我配置它)併發送給SP? –

+0

或者有什麼方法可以讓ADFS向我返回SAML 2.0響應,我將其加密並將其包裝在中並將其發送給SP? –

+0

用一個用例來更新您的問題,該用例逐步介紹您在高層嘗試執行的操作。我有點困惑。 – nzpcmad