Google chrome extension Chrome扩展能否从重定向uri窃取OAuth令牌?

Google chrome extension Chrome扩展能否从重定向uri窃取OAuth令牌?,google-chrome-extension,oauth-2.0,google-oauth,amazon-cognito,openid-connect,Google Chrome Extension,Oauth 2.0,Google Oauth,Amazon Cognito,Openid Connect,我正在Chrome扩展和Google云平台之间使用auth,并尝试将id\u令牌JWT发送到AWS服务器以检索用户数据(和/或建立会话?) 我的问题是——如何防止具有选项卡权限的chrome扩展读取GET请求或具有完全验证用户JWT的重定向URI JWT确认用户是谁,但我如何知道我的Chrome扩展是向我的后端发出请求的扩展 我有一些想法: 也许我可以创建一个只有我的扩展才能控制的私有窗口 也许我可以先使用nonce或从服务器获取nonce 也许我的chrome扩展有一个私钥,或者用我的后端(有

我正在Chrome扩展和Google云平台之间使用auth,并尝试将
id\u令牌
JWT发送到AWS服务器以检索用户数据(和/或建立会话?)

我的问题是——如何防止具有
选项卡
权限的chrome扩展读取GET请求或具有完全验证用户JWT的重定向URI

JWT确认用户是谁,但我如何知道我的Chrome扩展是向我的后端发出请求的扩展

我有一些想法:

  • 也许我可以创建一个只有我的扩展才能控制的私有窗口

  • 也许我可以先使用nonce或从服务器获取nonce

  • 也许我的chrome扩展有一个私钥,或者用我的后端(有公钥)来验证自己

  • 任何帮助都将不胜感激,很难研究这个特定场景



    AFAIK唯一的方法是API,尤其是launchWebAuthFlow方法。@wOxxOm相同,但它只返回一个API访问\u令牌,这需要钱,而不是OpenID\u令牌。在什么方面相同?我的猜测是,它不能被窃取,因为该URL不应该报告给其他扩展。
    var url = 'https://accounts.google.com/o/oauth2/v2/auth' +
              '?client_id=' + encodeURIComponent(chrome.runtime.getManifest().oauth2.client_id) +
              '&response_type=id_token' +
              '&redirect_uri=' + encodeURIComponent(chrome.identity.getRedirectURL()) +
              '&scope=' + encodeURIComponent(chrome.runtime.getManifest().oauth2.scopes.join(' ')) +
              '&nonce=' + Math.floor(Math.random() * 10000000);
    
    chrome.windows.create({ url: 'about:blank' }, function ({ tabs }) {
        chrome.tabs.onUpdated.addListener(
            function googleAuthorizationHook(tabId, changeInfo, tab) {
                if (tab.id === tabs[0].id) {
                    if (tab.title !== 'about:blank') {
                        console.log(url);
                        if (tab.title.startsWith(chrome.identity.getRedirectURL())) {
                            const id_token = tab.title.split('#')[1];
                            console.log(id_token);
                        } else {
                            console.error(tab.title)
                        }
    
                        chrome.tabs.onUpdated.removeListener(googleAuthorizationHook);
                        chrome.tabs.remove(tab.id);
                    }
                }
            }
        );
    
        chrome.tabs.update(tabs[0].id, { 'url': url });
    });