1

我們擁有支持多個合作伙伴的multitenant asp.net MVC網站。目前我們正在使用表單身份驗證來驗證用戶身份。現在一些合作伙伴已經要求SAML提供單點登錄支持。針對asp.net使用WSFederationAuthenticationModule對多個身份提供者進行身份驗證

我做了快速POC測試它反對「Thinktecture」身份提供商。我所做的只是安裝VS 2012的「身份和訪問」擴展,並配置身份提供商。我注意到擴展在web.config文件中添加了像IP和領域的URL這樣的配置設置。它還添加了「WSFederationAuthenticationModule」模塊來處理認證。這個模塊處理所有的重定向和場景響應的驗證。

在我的情況下,由於我們將有多個身份提供者,根據合作伙伴,我將選擇身份提供者。不同IP的URL將被存儲在數據庫中。我無法在web.config中列出所有IP。因此,我需要一種機制,在該機制中,我可以將用戶重定向到適當的IP URL,並且一旦IP將回復結果,驗證結果並通過聲明檢索用戶信息。我不想對結果進行XML解析並驗證響應,只是想調用「WSFederationAuthenticationModule」中的方法來完成繁重的工作。但我不確定哪些方法對我有用。有人可以幫我解決問題嗎?或者我需要執行哪些方法來實現這一目標?

回答

2

看看我的簡單的例子

http://www.wiktorzychla.com/2014/11/simplest-saml11-federated-authentication.html

關鍵是不要有在pipleline的WSFam模塊,而是使用其API來觸發重定向和消費的響應。如果你按照我的代碼,你會看到有兩個條款

// wsfed response or not 
if (!fam.IsSignInResponse(...)) 
    // redirect to provider 
else 
    // create local config and validate the incoming token 

這個簡單的例子是非常適用於多租戶的情況下,實際上我們使用WS-送入多租戶環境中日常大多數客戶都是基於這個核心做法。

即,通過編程方式在消費響應的分支中創建SecurityTokenHandlerConfiguration,可以完全控制如何驗證不同租戶的令牌。

+0

感謝您的鏈接。這真的很有幫助。還有一件事我想與你覈對是認證/驗證過程。在您的博客中,您已經給出了「IssuerNameRegistry」接口的示例實現。您能否詳細說明具體實施中應包含哪些內容? – Amey

+0

@Amey:在我的博客文章下面回答。如果您需要更多詳細信息,請在此處放一張便條。 –

+0

我只想說這個答案非常感謝。你應該得到許多讚揚。 – mghaoui

相關問題