2017-09-01 98 views
2

我正在開發基於擴展API的Chrome擴展程序,我需要對我自己的在線服務進行身份驗證。我讀過大量的文件,我知道我需要使用OAuth2和我應該使用chrome.identity.launchWebAuthFlow https://developer.chrome.com/apps/app_identity#update_manifestChrome擴展程序:關於身份驗證的最佳做法

我設法登錄使用launchWebAuthFlow工作。唯一的問題是,即使我已經使用瀏覽器會話登錄,它也要進行身份驗證。因此,擴展的身份驗證系統與瀏覽器中的身份驗證系統分離。

像Grammarly這樣的擴展可以檢測我是否在瀏覽器中以語法登錄並基於此來調整彈出內容。從我看看他們的源代碼,似乎他們正在使用cookie來檢測會話。一個擴展可以訪問Cookie使用

chrome.cookies.get({ url: 'http://localhost:8777', name: 'sessionid' }, 
    function (cookie) { 
     if (cookie) { 
     console.log(cookie.value); 
     } 
     else { 
     console.log('Can\'t get cookie! Check the name!'); 
     } 
    }) 

這真的是擴展API的工作方式?我不能使用(恕我直言)更安全的標識API並重新使用瀏覽器會話?

+1

也許[智威湯遜](https://jwt.io/)令牌將適合你。我在兩個擴展中使用它。 – Deliaz

+0

感謝您的評論@Deliaz,但你能詳細說明究竟如何?我想在我的擴展中「重複使用」我的瀏覽器會話,所以我需要將JWT保存在Cookie中,對嗎? –

+1

我說對了,在您的網站上登錄後,您還希望看到您已在擴展中籤名?在這種情況下,我猜想,您可以使用[外部消息傳遞](https://developer.chrome.com/apps/messaging#external-webpage)將JWT令牌發送到擴展程序(顯然,在成功驗證後)。你可以把JWT放到cookies上,但我更喜歡這個標題。 – Deliaz

回答

0

就像你注意到的那樣,launchWebAuthFlow不會利用你現有的瀏覽器會話。如果您有選項卡權限,則可以使用urn:ietf:wg:oauth:2.0:oob:aut作爲您的重定向URL從window.title中讀取oauth授權。有關它的更多信息,請參閱我的other answerThis SA answer有示例代碼。

相關問題