簡體   English   中英

如何安全地進行跨域身份驗證?

[英]How to do cross-domain authentication securely?

所以。 我有域A.com,其用戶身份驗證在域B.com完成。 目前我設置了這樣,以便登錄表單發布到B.com,如果成功,則設置會話cookie並激活重定向到Aloglogged。 但是,當表單發布到B.com並且cookie設置為該域時,當我從A.com執行JSON請求時,會話cookie不可用,我不知道他們是否登錄。 那么問題就變成了,如何解決這個問題呢?

我一直在考慮一個解決方案,我會在重定向uri中添加一個令牌,然后可以用A.com進行一次身份驗證的會話創建(瀏覽器可以使用該令牌來驗證與B.com的會話,這樣cookie就可以設置為A.com,並且可以在JSON請求中使用。之后令牌將被無效.c)。

但是,我不確定這個解決方案有多安全? 或者還有其他更安全的解決方案嗎?

您當前的解決方案對我來說很好,可以在這種情況下使用。 但是出於安全考慮,您可能希望使用一些良好的加密方法對其進行加密,而不是提供普通令牌,您可以在使用它之前配置服務器以加密和解密authentication token 唯一的問題是您需要為您的案例選擇最佳算法。

除了這個解決方案,您可以考慮會話管理工具。 Session MigrationSession Replication會話共享是我能想到的選項。

以下是Oracle為會話共享提供的解決方案的鏈接 ,我認為這對您的情況有幫助。

安全斷言標記語言(SAML,發音為“sam-el”[1])是一種基於XML的開放標准數據格式,用於在各方之間,特別是在身份提供者和服務提供者之間交換認證和授權數據。 SAML是OASIS安全服務技術委員會的產品。 SAML的日期是2001年; 最新的SAML更新是從2005年開始的。

SAML解決的最重要的一個要求是Web瀏覽器單點登錄(SSO)。 單點登錄解決方案在Intranet級別是常見的(例如,使用cookie),但是將這些解決方案擴展到Intranet之外一直存在問題,並導致非互操作專有技術的激增。 (另一種解決瀏覽器SSO問題的最新方法是OpenID協議。)SAML規范定義了三個角色:主體(通常是用戶),身份提供者(IdP)和服務提供者(SP)。 在SAML解決的用例中,委托人請求服務提供商提供服務。 服務提供者從身份提供者請求並獲得身份斷言。 在此斷言的基礎上,服務提供商可以做出訪問控制決策 - 換句話說,它可以決定是否為連接的主體執行某些服務。

在向SP發送身份斷言之前,IdP可以從委托人請求一些信息 - 例如用戶名和密碼 - 以便對委托人進行身份驗證。 SAML指定三方之間的斷言:特別是斷言從IdP傳遞到SP的身份的消息。 在SAML中,一個身份提供者可以向許多服務提供者提供SAML斷言。 相反,一個SP可能依賴並信任來自許多獨立IdP的斷言。 SAML未在身份提供者處指定身份驗證方法; 它可以使用用戶名和密碼,或其他形式的身份驗證,包括多因素身份驗證。 允許用戶使用用戶名和密碼登錄的目錄服務是身份提供者處的身份驗證令牌(例如密碼)的典型來源。 流行的通用互聯網社交網絡服務還提供理論上可用於支持SAML交換的身份服務。

http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language

是的,有更安全的選擇。

對於Single Sign On,有一個名為OpenID / connect的開放標准(構建在oAuth2.0之上)對於資源共享,授權和身份驗證,有oAuth。

要記住的事情。

  1. 所有這些解決方案都只是控制安全漏洞 - 請謹慎使用。
  2. 所有這些解決方案都讓您對XSS,中間人和劫持/重播攻擊感到不安。
  3. 由於第1點和第2點,仔細實施至關重要。

利用社區已經完成的工作。

oAuth 1.0a(目前仍被廣泛認為是最安全的模式) - http://tools.ietf.org/html/rfc5849 oAuth 2 - http://oauth.net/2/ (使用openID進行授權建立在頂部oAuth2)

oAuth 2不是oAuth 1a的替代品 - 它是一種全新(不太安全)的想法,嚴重依賴於SSL - oAuth1a仍然是最安全的 - 但仍然只有你的實施和對潛在弱點的理解一樣好。

你可能正在尋找openID連接的想法 - 但oAuth信息也很有用......

SO--一些差異的起點

openID connect(在oAuth 2上分層)

oAuth概念

所以 - 值得一讀

使用身份驗證令牌應該可以正常工作,但請考慮以下幾點:

  • 使用強PRNG生成令牌,並生成長令牌以防止強制執行
  • 確保使用的令牌立即失效以防止重放攻擊

在我看來,這兩點對於防止劫持身份驗證令牌並重用它非常關鍵。 還限制令牌有效的時間(30秒應該沒問題),以防止濫用舊/未使用的令牌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM