2011-12-01 55 views
2

目前我們沒有使用OAuth的使用我們的應用,但我們正在做的工作轉變,我們必須直接登錄,並捕獲了輸入的用戶名/密碼和存儲那些。然後,我們轉向並使用存儲的憑證來獲取允許用戶在Salesforce.com中打開記錄的功能,我們將用戶/通行證傳遞到登錄端點以及特定記錄的起始URL,這非常有用,是一個非常受歡迎的功能,因爲它是從應用程序到Salesforce.com的簡單SSO,用戶可以在該應用程序中看到所有可能無法看到的數據。使用OAuth 2.0令牌登陸到Salesforce.com

移動到OAuth 2.0,並使用標準的Webflow,我們不再能夠捕獲用戶名/密碼,這其實是一件好事,因爲就有關安全的問題。然而,我們希望保持這種功能,無論如何,通過傳遞一個OAuth令牌或某種類型的sesson id,可以將SSO加入Salesforce.com?

閱讀更多思考什麼的OAuth實現我覺得這可能是不可能的是,所獲得的令牌意味着只與API,而不是與前端系統中使用後。我希望我錯了,而且有一種方法可以使用這些令牌登錄到前端。

編輯

好吧,我來編輯希望使這更清楚。當前用戶使用login()API方法對其用戶/密碼進行身份驗證,我們將此用戶/密碼本地存儲(不理想)。然後,我們會同步用戶隨時可以在應用內訪問的數據子集,因爲它是一個子集,我們有一個「SSO」功能到Salesforce.com前端。這隻需使用URL https://ns8.salesforce.com/?pw=PASSWORD&[email protected]&startURL=/recordId在Web視圖(UIWebView)中打開Salesforce.com。這會將我們登錄到Salesforce.com並打開指定的記錄。

展望未來,我們希望將OAuth 2.0與Web流程一起使用,以便我們不處理用戶/通行證,以便我們不必處理安全令牌或打開特定的IP範圍以允許無安全地登錄令牌。

隨着中說,反正是有使用來自OAuth認證收到打開Salesforce.com令牌/證書,自動登錄的用戶,以及轉到一個特定的記錄?

我之前可能錯誤地使用了「單點登錄」,但從某種意義上說,這是模擬從我們的應用程序到Salesforce.com的SSO,因爲我們的用戶可以觸摸應用程序中的單個按鈕並登錄到Salesforce.com網頁界面。

+0

令牌是一種握手機制,用於驗證和引進的yourself.i懷疑你找什麼是不可能實現的。 –

回答

4

當您請求OAuth令牌時,您可以指定它具有的範圍,選項僅包括api(原始令牌類型)或其他選項,其中包括將令牌與UI頁面配合使用的功能。 (請參閱help中的示波器參數詳細信息)。其中一個缺點是使用該標記引導用戶界面的方法,當你所能做的只是告訴瀏覽器/ web視圖獲得一個URL,但是一種廣泛使用(但不支持)的方式是通過frontdoor.jsp,例如,你能夠打開https:// {}實例{/secur/frontdoor.jsp?sid=} the_Access_token & retURL = {} optional_relative_url_to_open記得來urlencode 2倍的值。

+0

這正是我正在尋找的,謝謝!如果它能解決問題,我將對其進行測試並接受答案。 –

+0

完美的作品,再次感謝! –

+0

謝謝。這個答案也適用於我們。你提到這是不受支持的。 Salesforce是否有其他方式正式支持? – Krishna

1

所以我認爲你說你的應用程序使用SFDC用戶名和密碼,以驗證剛剛從SFDC檢索記錄在您的應用程序中顯示?

如果這是正確的 - 這是我認爲這是 - ,那麼你可以只使用標準Salesforce的單點登錄系統進行身份驗證。有一個指南here,其中概述了建立SAML SSO系統的過程,Pat Patterson撰寫了關於安全系統如何工作的有趣功能here。他還在DeveloperForce here上寫了一篇很棒的博客文章,內容涉及Force.com的一般OAuth的細節,而不僅僅是SAML設置。我已經在iPad應用程序中使用OAuth系統來對付SFDC,並且它可以快速輕鬆地工作。我看不出爲什麼你的系統不能按照你的意願使用協議。

+0

編輯我的答案來澄清事情,我還沒有通過你發佈的所有SAML/SSO文檔。正如你熟悉它們,請讓我知道如果其中一種方法將解決這個問題。謝謝。 –

+0

superfell的答案更具體,我的一般指南介紹了FDC上可能的OAuth方法。當你沿着我想象的方向前進時,它們將對你有用,但很高興你得到了一個解決方案。 – pbattisson

0

直接訪問Salesforce是SSO的關鍵優勢,並且絕對可以提供。我不確定您在哪裏閱讀Salesforce中的SSO只是API。從鏈接爲您的SSO PDF pbattisson:

使用單點登錄,用戶只需要記住一個密碼來訪問 兩個網絡資源或外部應用程序和Salesforce。 從企業網絡內部訪問Salesforce時,用戶無法登錄到而無法輸入用戶名或 密碼,因此用戶 無縫登錄。當從企業 網絡外部訪問Salesforce的,用戶的企業網絡登錄到工作中記錄它們。隨着 更少的密碼管理,系統管理員收到更少的 請求重置遺忘的密碼。

的OAuth 1 & 2都支持,雖然我的OAuth 2的風扇,因爲1具有涉及的參數和它們的編碼序列的次序真挑剔的附加步驟。我最近寫了一個Apex-Twitter集成,很快就實現了它wasn't going to be as easyFacebook, which uses OAuth 2.0

但在你的情況下,它聽起來就像你只是想爲用戶提供實際登錄到Salesforce和去一個特定的目標網頁一旦被認證的能力。這絕對是可行的。

祝你好運!

相關問題