背景:我正在使用node.js和express來創建API。我在API服務器中以標準的用戶/用戶密鑰/祕密方式實現了OAuth(與Twitter,Facebook等相同)。我希望第三方能夠連接到我的API,再次以與這些通用API相同的方式。創建OAuth API時的應用程序令牌/祕密
通常情況下,客戶端將連接一個應用程序令牌/祕密(例如,您創建一個Facebook應用程序作爲Facebook開發人員,這些給你)。然而,有時候客戶端不能爲應用程序提供祕密,因爲代碼是以不安全的方式實現的。具體來說,我指的是Javascript庫。例如,開發人員不希望在Javascript代碼中公開他們的應用程序祕密,因爲它是明文的,可以被惡意用戶讀取。
我注意到Facebook避免了這個問題。開發人員只需向Javascript庫提供一個應用程序令牌(非祕密)。我不明白如何爲我的API提供類似的選項,而不會從根本上使我的庫不安全。也就是說,如果請求是通過Javascript客戶端庫向API提出的,而沒有提供良好安全的令牌/密碼,那麼這些請求如何通過OAuth API進行身份驗證?
在智能上,我能想到的最佳解決方案是通過HTTPS連接在Javascript客戶端庫和API服務器之間進行某種令牌切換,以便爲庫返回一個祕密。不過,我不太確定我如何確保這一切換,以防止惡搞。
啊,花了我的一對夫婦的讀數,但它現在是有道理的。絕對會在我的實施中增加一些工作,但你說得對,這聽起來像是我最好的選擇。不過,使用重定向URL進行身份驗證有一定的優雅。 – 2012-07-09 18:46:07