2016-04-01 35 views
1

有幾天我一直在研究ASP.NET中的Single Sign On機制,但是我仍然無法找到我需要解決的問題的答案。我已閱讀了幾篇關於該機制的文章(包括https://www.simple-talk.com/dotnet/asp.net/introducing-single-sign-on-to-an-existing-asp.net-mvc-application/http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic),但認爲我不能完全理解它是如何工作的,或者我正在尋找一個錯誤的東西。單一登錄僅供部分用戶使用?

如果我理解的很好,Single Sign On是一種機制,它允許使用單一憑證對所有連接的Web應用程序中的用戶進行身份驗證。但是,我需要做的是僅允許應用程序A中的一些用戶通過單擊超鏈接訪問應用程序B中的某些功能(因爲只有一些用戶在兩個應用程序中都有帳戶)。這兩個應用程序應該有一個獨立的登錄機制(因爲有些用戶應該只能訪問其中一個應用程序),但是當用戶登錄應用程序A並在應用程序B中擁有一個帳戶時,他應該在兩個應用程序中登錄(不一定另一方面)。

問題出在這裏:單一登錄集中認證真的是我需要的嗎?如果是的話,我怎麼能只爲一些用戶使用它?如果有人能夠向我解釋或提供信息來源,我將非常感激,在那裏我可以找到更多關於它的信息。

+1

嗯,我認爲你是混淆認證與_authorisation_。前者決定誰是誰,而後者是他們能做什麼。您可以在整個董事會中使用SSO,但_deny_某些用戶在某些站點執行某些操作或完全拒絕他們。這並不意味着你應該混合使用SSO和非SSO。 – MickyD

+0

感謝您的回答。其實,我知道其中的差異,但在解決問題時仍然存在問題。但是,由於你寫了什麼,我想到了一件事。如果我理解正確,或者如果用戶在這兩個應用程序中都有一個帳戶,我可以將他視爲已認證(意味着存儲一個auth cookie),然後在應用程序內部,我可以檢查他是否有足夠的權限,如果沒有,簽署他並再次重定向到登錄屏幕,對不對? – PJDev

+0

沒有probs。是的,這聽起來很不錯。 – MickyD

回答

1

這是與OP的對話摘要,因爲害怕被刪除。


OP:

不過,我需要做的是隻允許從應用程序A的一些用戶通過點擊超鏈接來訪問應用程序B的某些功能(因爲只有一些用戶將不得不考慮在兩個應用程序中)。這兩個應用程序應該有一個獨立的登錄機制(因爲有些用戶應該只能訪問其中一個應用程序),但是當用戶登錄應用程序A並在應用程序B中擁有一個帳戶時,他應該在兩個應用程序中登錄(不一定另一方面)。

您是否想過身份驗證或授權?前者決定誰是誰,而後者是他們能做的。您可以全面使用SSO,但會拒絕某些用戶在某些站點執行某些操作或完全否認這些操作。這並不意味着你應該有SSO與非SSO的混合

OP:

感謝您的回答。其實,我知道其中的差異,但在解決問題時仍然存在問題。但是,由於你寫了什麼,我想到了一件事。如果我理解正確,或者如果用戶在這兩個應用程序中都有一個帳戶,我可以將他視爲已認證(意味着存儲一個auth cookie),然後在應用程序內部,我可以檢查他是否有足夠的權限,如果沒有,簽署他並再次重定向到登錄屏幕,對不對?

沒有probs。是的,這聽起來很不錯。

OP:

我有隻有一個問題。我想知道是否有一種不需要使用集中身份服務器的簡單方法,例如一個在「非常基本的跨域SSO實施模型」here下的序列圖中呈現。根據我在這個問題上寫的內容,你會如何評價這個解決方案?

嗯,我認爲最終效果即可,即用戶只需要登錄一次;儘管我不確定執行情況。問題在於,單個站點現在依賴於其他兩個站點在重定向期間可訪問(而不僅僅是一個SSO提供程序站點)。如果一個人失敗了,就會中斷。此外,現在,所有3個站點都必須擔心提供「登錄」頁面,以防用戶首先訪問該站點(本文假設其始終爲domain1)。這是一個特設SSO,就像你可以做沒有中央基站的ad-hoc wi-fi一樣。

OP:

在這裏,問題來了:是單點登錄和集中認證真的是我需要的嗎?如果是的話,我怎麼能只爲一些用戶使用它?

我認爲擁有單一機制的好處勝過在兩個或多個應用程序中維護單獨的登錄設施。我不明白你爲什麼不能拒絕某些用戶的SSO。依賴站點可以使用特定站點帳戶或SSO帳戶輕鬆確定用戶是否正在登錄。在這兩種情況下,帳戶註冊都可以由管理員批准,拒絕某些申請人(特別是如果是企業)或僅使用網站中的授權規則。您也可能知道,僅僅因爲一個網站可以接受SSO,並不意味着它是專有SSO。即使Groovy網站如StackOverflow接受來自SO本地帳戶以及來自SSO提供商的登錄信息,如說GoogleFacebook

+0

再次感謝您的回答。這真的很有幫助,我明白集中式SSO的重點。當然,你認爲在一個地方擁有所有的認證機制是一個很大的優勢。我尋找更簡單的解決方案的唯一原因是因爲實施起來需要更少的時間和精力,因爲我們已經有兩個應用程序,它們具有單獨的登錄屏幕和不同的身份驗證邏輯。我們將考慮兩種解決方案的優缺點,並選擇最適合我們要求的解決方案。 :-) – PJDev

+0

@PJDev優秀。祝你好運。 – MickyD