我用oath2做了我自己的認證服務器(不使用任何Facebook或谷歌),我想知道在哪裏首先將客戶端密鑰存儲在移動設備上。由於共享首選項可能侵入rooted電話,並且acces令牌請求需要客戶端ID,所以我正面臨一個問題。oauth2如何在android手機上存儲客戶端密碼以便請求訪問令牌?
(如複製,因爲我沒有找到一個類似的帖子答案,請不要紀念這個問題)
我用oath2做了我自己的認證服務器(不使用任何Facebook或谷歌),我想知道在哪裏首先將客戶端密鑰存儲在移動設備上。由於共享首選項可能侵入rooted電話,並且acces令牌請求需要客戶端ID,所以我正面臨一個問題。oauth2如何在android手機上存儲客戶端密碼以便請求訪問令牌?
(如複製,因爲我沒有找到一個類似的帖子答案,請不要紀念這個問題)
您,當您使用授權碼流需要在客戶端ID和密鑰。此流程通常用於客戶端受到高度信任的情況下,例如從服務器運行的API。在不希望存儲客戶機密鑰的情況下,隱式流程是更好的選擇。
隱式流程與授權代碼流不同,授權服務器返回響應。隱式流直接返回access_token。要獲得長時間的有效會話,您可以請求刷新令牌以及訪問令牌。噹噹前訪問令牌變爲無效或過期時,刷新令牌可用於獲取新的訪問令牌。
如果您有任何其他問題,請讓我知道。
謝謝, Soma。
噢,真的非常感謝你的迴應,並且對我的英語感到抱歉...這是我的謝意:)! 讓我先解釋一下情況。這是一個基本的用例。我在沒有網站的移動設備(android和iOS)上爲我的應用做了一個oauth2服務器。它不打算用於其他應用程序(至少目前...)。據我所知,這是授權流程的目標,在創建新客戶端時必須通過此重定向。 你能解釋一下我一步一步的過程嗎? – Johnduff
什麼是客戶?在我的情況下,我的所有用戶只有1個客戶端,因爲我是我的誓言服務器中唯一的«演員»?在這種情況下,我明白如何在用戶登錄時通過傳遞客戶端ID來隱式執行。 但我仍然不明白在請求隱式流中的訪問令牌時重定向url的用途以及如何處理在移動... 真的非常感謝您的幫助。我認爲這個問題可以幫助其他人。 – Johnduff
嗨,用戶需要身份驗證時重定向到登錄頁面。 redirect uri會通知驗證服務器驗證身份後向用戶發送消息的位置。 IOS應用程序可能是一個客戶端,Android可能是另一個客戶端客戶端已在認證服務器上預先註冊。希望這可以幫助。謝謝。 –
你面臨的問題究竟是什麼?就共享首選項而言,Android設備不需要是root用戶。 (http://developer.android.com/reference/android/content/SharedPreferences.html) – Naman
嗨,我不是說這個設備必須被植根!我敢說,一個擁有根深蒂固的手機的人可以訪問共享的pref,然後攻擊客戶端的祕密...... 這不是關於共享pref的問題,而是oauth2 mecanism中的「如何做」。 auth2協議需要客戶端ID來檢索具有授權密碼的訪問令牌。將客戶端ID存儲在手機上似乎很糟糕。所以如何在用戶設置密碼和登錄時檢索acces令牌。然後,我是否也必須將共享首選項中的訪問令牌存儲?感謝幫助 ! – Johnduff