2017-09-01 24 views
2

私はExtension APIに基づいてクロムエクステンションを開発しています。私は自分のオンラインサービスに対して認証する必要があります。私は、ドキュメントをたくさん読んで、私は私がOAuth2を使用する必要があることを知っていると私はlaunchWebAuthFlowを使用して作業ログインを得ることができたchrome.identity.launchWebAuthFlow https://developer.chrome.com/apps/app_identity#update_manifestChrome拡張:認証に関するベストプラクティス

私はおそらく使用すべきであるということ。唯一の問題は、すでにブラウザセッションを使用してログインしていても認証を行いたいということです。したがって、拡張機能の認証システムはブラウザ内の認証システムとは分離されています。

Grammarlyのような拡張機能は、ブラウザでGrammarlyにログインしているかどうかを検出し、それに基づいてポップアップコンテンツを調整します。私はソースコードを見てから、セッションを検出するためにクッキーを使用しているようです。エクステンションはクッキーにアクセスできます

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!'); 
     } 
    }) 

これは本当にExtension APIの仕組みですか?より安全なIdentity APIを使用して(IMHO)ブラウザセッションを再利用することはできませんか?

+1

多分[JWT](https://jwt.io/)のトークンがあなたに合っています。私はカップルの拡張でそれを使用します。 – Deliaz

+0

あなたのコメント@Deliazに感謝しますが、正確にどのように詳細を教えてくださいできますか?拡張機能でブラウザセッションを「再利用」したいので、JWTをどちらかの方法でクッキーに保存する必要がありますか? –

+1

あなたのウェブサイトにログインした後で、あなたがエクステンションにサインインしていることを確認してもよろしいですか?この場合、[External Message Passing](https://developer.chrome.com/apps/messaging#external-webpage)を使用して拡張機能にJWTトークンを送信することができます(認証が成功した後は明らかです)。そしてJWTをクッキーに入れることができますが、私はそのためのヘッダーを好みます。 – Deliaz

答えて

0

あなたが気づいたように、launchWebAuthFlowは既存のブラウザセッションを活用しません。タブ権限がある場合は、urn:ietf:wg:oauth:2.0:oob:autをリダイレクトURLとして使用して、window.titleからoauth許可を読み取ることができます。詳細は、other answerを参照してください。 This SA answerにはサンプルコードがあります。

関連する問題