我正在开发基于扩展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并重新使用浏览器会话?
也许[智威汤逊](https://jwt.io/)令牌将适合你。我在两个扩展中使用它。 – Deliaz
感谢您的评论@Deliaz,但你能详细说明究竟如何?我想在我的扩展中“重复使用”我的浏览器会话,所以我需要将JWT保存在Cookie中,对吗? –
我说对了,在您的网站上登录后,您还希望看到您已在扩展中签名?在这种情况下,我猜想,您可以使用[外部消息传递](https://developer.chrome.com/apps/messaging#external-webpage)将JWT令牌发送到扩展程序(显然,在成功验证后)。你可以把JWT放到cookies上,但我更喜欢这个标题。 – Deliaz