2012-06-14 47 views
1

我正在開發一個項目,以在系統中實施基於令牌的認證。我正在考慮使用SAML或OAuth。有關SAML,OAuth的問題

我想知道是否有可能在令牌中表示實際的策略(這是基於ACL的系統)。在當前的設計中,我一直在考慮給用戶一個包含所有資源和允許角色的令牌。該服務根據用戶的請求檢查該令牌,以查看用戶是否對涉及的資源具有所需的許可。

是否可以使用SAML/OAuth標記表示?如果兩者都有可能,那麼應該在這裏使用哪一個。從我看到的大多數示例中,SAML用於SSO解決方案,OAuth用於定義實際授權策略。但是從演示/示例中不清楚是否可以使用OAuth對特定資源進行限制訪問。

例如當Facebook應用程序想要使用OAuth訪問您的照片時,是否可以將訪問權限限制爲某個特定相冊?或者更像是所有或沒有辦法。是否有任何資源可以閱讀以獲取更多信息?

回答

1

大多數體系結構(對於SAML和OAuth)都使用包含依賴方(或接收API)解釋並應用其自己的策略(ACL)的屬性的令牌。

對於OAuth,範圍用於指定訪問令牌代表的權限。範圍可以像你喜歡的一樣細緻(包括單個相冊限制等情況)。這些可能已由用戶在某些OAuth流中授權。令牌本身並未在OAuth 2.0規範中定義 - 但您可以使格式自包含(可能由令牌頒發者進行數字簽名),以便將範圍保存在其中。有些模型使用不透明的令牌,需要通過回調(可能是反向渠道)向發行者進行驗證,然後將範圍返回給依賴方。

在SAML中,出於類似目的,屬性聲明可以出現在斷言中。依賴方解釋個人屬性以確定用戶被授權執行的操作。屬性聲明可以作爲SSO的一部分,或者可以通過AttributeQuery在稍後的某個點(認證後)獲得。

+0

感謝您的回覆!在上述項目的情況下,我認爲會有1000年的資源。所以從我對角色的理解中,我需要定義數千個角色?在允許一個用戶訪問多個資源的情況下,必須設計新的角色。 但是在SAML的情況下,這可以通過使用一些XML語句形式的AttributeQuery來實現,它會更清潔嗎? – Sameer

+0

它有很多方面都差不多。如果你真的需要控制細粒度的訪問,那麼你最終可以將角色/範圍映射到你的資源。您可能還想考慮SAML AuthzDecisionQuery,它可以減輕您定義角色的風險(至少在身份提供者和依賴方之間它們是已知的)。相反,如果用戶可以訪問某些內容(例如給定的URL),則RP會直接詢問IdP。 –

+0

我的印象是,在SAML中,用戶可以獲得包含XML語句的令牌。我打算使用這些XML語句來定義有問題的用戶可以使用的資源以及允許的權限。有了這個實現,就不需要定義任何角色。這些組仍然需要定義,但它只是ACL已經存在的自然延伸。這就是爲什麼我認爲這將比OAuth更簡單和更乾淨的實現。如果我的理解不正確,請糾正我。再次感謝! – Sameer