2017-09-01 93 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有示例代码。

相关问题