2011-01-06 55 views
2

使用OAuth我現在讀一些介紹材料瞭解OAuth,具有想法的自由軟件使用它。在自由/開源軟件

和我讀到這樣的:

消費者祕密絕不能 透露給任何人。不要將其包含在任何請求 ,顯示它在任何代碼 樣本(包括開源),或在 任何方式透露它。

如果我正在爲使用OAuth的特定網站編寫一個免費的客戶端,那麼我必須在源代碼中包含消費者密碼,否則從源代碼製作會使該軟件無法使用。然而,正如所說的,祕密不應該與來源一起釋放。

我完全瞭解安全方面的考慮,但是,我怎麼能解決這一難題,並在自由軟件使用OAuth?

我想用一個外部網站進行身份驗證的代理,但這是非常複雜的。你有更好的想法嗎?

編輯:
有些客戶喜歡Gwibber還使用OAuth,但我沒有檢查它的代碼。

回答

0

如果您的服務提供商是一個Web應用程序,服務器需要用戶註冊頁面,提供消費者secret作爲用戶註冊自己的消費。這與Twitter應用程序經歷的過程相同。嘗試在那裏註冊並查看他們的工作流程,即可完成所有步驟。

如果您的軟件是點對點的,則每個應用程序需要既是服務提供商又是的消費者。下面的Jira和Confluence使用案例概述了該實例。

在我的意見之一,我提到https://twitter.com/apps/new作爲其中的Twitter應用程序開發商產生消費者的祕密地點。你如何製作這樣一個頁面取決於系統架構。如果所有消費者都會與一臺服務器通話,則該服務器必須有一個頁面,如https://twitter.com/apps/new。如果有多個服務器(即客戶端聯盟),則每個聯合需要一個服務器與該頁面。

又如要考慮的是Atlassian的應用程序如何使用OAuth。他們是點對點的。建立吉拉和匯合交談彼此仍然有設置頁面中的每個應用,但它遠不一樣複雜https://twitter.com/apps/new。這兩款應用程序都是消費者和服務提供商。在訪問每個應用程序的設置允許該應用進行設置作爲服務提供者與其他應用程序的單向信任,由於消費。要建立雙向信任關係,用戶必須訪問這兩個應用程序的服務提供商設置頁面,並告知其他應用程序的URL。

+0

這意味着即使桌面應用程序將需要一個Web服務器? – 2011-01-06 15:54:36

+0

客戶機連接到的計算機上需要有一個Web服務器,但不是每個客戶機上都有。 – 2011-01-06 15:57:45

0

我不知道我得到的問題,你能不能開發的代碼作爲開源從配置文件檢索客戶祕密,也許留在一個特殊的數據庫中的表?這樣代碼將不包含客戶機密(並且因此將作爲開放源代碼「共享」),但客戶機密仍然可供應用程序訪問。

也許具有目標平臺上的一些細節會有所幫助,因爲在一些(我想Tomcat的現在)參數,比如這一個可以包含在服務器配置文件。

如果是PHP,我知道一個開源項目(Moodle)的案例,它保留一個包含所有重要配置定義的php文件(config.php),並從所有頁面引用此文件以獲取定義。管理員有責任使用特定於該安裝的值來完成此文件的內容。事實上,如果應用程序可以看到該文件丟失(通常在第一次訪問該網站),它會重定向到一個嚮導,管理員可以在一個更加用戶友好的方式填寫內容。在這種情況下,客戶機密將是這些配置之一,因此將存在於「生產」代碼中,而不是以「可分發」形式存在。

我個人比較喜歡在表中存儲爲它設計的數據庫中的該值和其他可能的參數作爲代碼的想法不需要被改變。如果這些值不存在,也許可以在這裏介紹安裝嚮導。

這是否解決您的問題?