2010-06-06 170 views
0

我正在構建我的創業公司,並且我正在考慮共享服務的使用。與身份驗證服務器通話

到目前爲止,我想允許在一個應用上擁有用戶帳戶的用戶能夠在另一個應用上使用相同的用戶帳戶。這意味着我將不得不建立一個認證服務器。

我想就如何讓應用程序與身份驗證服務器交談發表意見。我應該使用捲曲嗎?我應該使用Python的http庫嗎?所有的代碼將在Python中。

它要做的就是詢問認證服務器是否允許該人使用該應用,並且認證服務器將返回一個JSON用戶對象。所有授權(角色和資源)都將獨立於應用程序,因此該應用程序無需處理該應用程序。

對不起,這似乎有點新鮮;這是我第一次將驗證與實際應用程序分開。

+0

我認爲這個問題需要一些澄清。中央服務器是用來識別用戶(認證)還是報告用戶被允許訪問(授權)的資源?當考慮現有的技術來建議時,差別可能是相關的,例如, RADIUS或OpenID。 – 2010-06-06 23:40:25

+0

@Forest我在我的文章中表示,這是純粹的身份驗證,而不是授權。 – Kyle 2010-06-07 05:59:14

+1

是的,但你也表示你打算「詢問認證服務器是否允許該人使用該應用程序」,這是一個授權問題,而不是認證。它讓我感到困惑。 :) – 2010-06-07 06:03:24

回答

1

假設您打算編寫自己的auth客戶端代碼,它不是事件驅動的,並且您不需要驗證https證書,我會建議使用python的內置urllib2調用auth服務器。這將最大限度地減少依賴關係,這應該使部署和升級更容易。這就是說,世界上有很多現有的認證相關協議和庫,其中一些可能爲你節省一些時間和安全性,從頭開始編寫代碼。例如,如果您讓auth服務器使用OpenID,那麼許多非自助應用程序和服務器(包括Apache)都會爲您提供auth客戶端插件。

0

你的問題不是一個真正的編程問題,因爲它是一個架構問題。我建議你的具體情況是建立一個LDAP服務器進行認證,授權和計費(AAA)。然後讓你的應用程序使用它(每種語言都有用於LDAP的模塊和庫)。這是處理這種事情的可靠,安全,成熟和知名的方式。

即使您嚴格要強制執行基於HTTP的身份驗證,也很容易將身份驗證服務器放在您的LDAP前面,並將其稱爲一天。甚至有現成的代碼可以做到這一點,所以你不必重新發明輪子。

+0

我會用什麼其他服務來解決架構問題? – Kyle 2010-06-07 05:58:37