2017-10-04 121 views
0

我們正在使用自定義身份驗證源運行simpleSAMLphp IDP,但現在面臨的挑戰是添加對多因素身份驗證(MFA,也就是雙因素身份驗證或兩步驗證)的支持。我已經開始嘗試在同一個自定義Auth Source中實現MFA支持,但它似乎更復雜,更耦合,而不是必要的。實施雙因素認證安全嗎?在simpleSAMLphp中作爲Auth Proc,還是應該使用Auth Source?

此外,我注意到一個simpleSAMLphp模塊(aidan-/SimpleTOTP)使用Auth Proc來實現MFA。

然而,the simpleSAMLphp page on Auth Procs說,這是「不neccessarily個好主意」,以實現類似的訪問控制在驗證PROC​​,而不是鼓勵使用驗證特效的東西像從用戶獲得同意或搞亂與用戶屬性是將被退回給SP。

所以問題是,simpleSAMLphp的設計是否安全(足夠)使用Auth Proc來處理登錄的MFA部分(在Auth Source已驗證用戶名和密碼之後),還是存在簡單的方法,用戶可以簡單地繞過MFA部分,並已經在IDP上有一個活動的會話?

編輯:另一個MFA相關模塊(simplesamlphp/simplesamlphp-module-yubikey)也實現爲驗證PROC​​,因此這似乎是去一個安全的方式,但我愛的人誰真正知道這是否是聽到打算使用simpleSAMLphp方式。

回答

0

爲了避免留下這個問題沒有一個公認的答案,我會回答我的問題。 (注意:雖然@ libregeek的回答很有幫助,但接受他的回答會誤導後來的讀者,以瞭解對我有用的東西。)

基於...

  • 的用於MFA和作爲AuthProcs實施的多個其他simpleSAMLphp模塊的存在,
  • 實施我溶液作爲AuthProc並且具有所有確認它正在工作,需要的話,和
  • 多個測試discussion鏈接到@ libregeek的答案

...它似乎足夠安全的使用simpleSAMLphp AuthProc實現MFA。

0

AuthProc在SimpleSAMLphp中實現MFA不是一個好主意。問題是,如果MFA驗證失敗,則登錄的會話將被孤立。

最理想的方法是開發一個身份驗證插件,但是我們可能必須在現有的身份驗證插件中分發功能,就像「重新發明輪子」一樣。當我們擁有多個授權資源時,這變得更加複雜。

另一種方法是在SP上執行MFA,但問題是我們需要爲我們使用的每個SP構建它。另外,它可能不是用戶友好的選擇。

從開發人員的角度來看,開發AuthProc過濾器可能是最簡單的選擇,因爲它可以重用許多現有的東西。

要解答您的問題,AFAIK,SimpleSAMLphp在AuthProc中沒有任何安全措施來處理登錄的MFA部分。但是,我認爲登錄用戶不能繞過AuthProc過濾器。

編輯: 有一個在SimpleSAMLphp郵件列表中一個有趣的討論:https://groups.google.com/forum/#!topic/simplesamlphp/ocQols0NCZ8

+0

所以,只要我們處理刪除孤立的會話,你會認爲一個Auth Proc會是一個可接受的方式來做到這一點? [Jaime的評論](https://groups.google.com/d/msg/simplesamlphp/ocQols0NCZ8/RL_WAcryBwAJ)在您所關聯的討論中似乎也支持認爲Auth Procs是實現MFA的可接受位置的觀點,即I找到鼓勵。 – matt

+1

這是我的理解,但它可能不正確。我們用Yubikey和Google Authenticator開發了一個類似的AuthProc過濾器(用於我們的客戶端),到目前爲止沒有任何問題。 – libregeek

相關問題