diff --git a/api-samples/webRequest/http-auth/http-auth.md b/api-samples/webRequest/http-auth/http-auth.md new file mode 100644 index 00000000..491202c2 --- /dev/null +++ b/api-samples/webRequest/http-auth/http-auth.md @@ -0,0 +1,7 @@ +# webRequest.onAuthRequired + +This sample demonstrates the `webRequest.onAuthRequired` listener to detect an authentication request and log the user into the designated site. + +## Overview + +When an authentication check is detected, a check is made to confirm that the request has come from the correct source. Account credentials are then provided for the response via an auth handler. diff --git a/api-samples/webRequest/http-auth/manifest.json b/api-samples/webRequest/http-auth/manifest.json new file mode 100644 index 00000000..82fe63ec --- /dev/null +++ b/api-samples/webRequest/http-auth/manifest.json @@ -0,0 +1,15 @@ +{ + "name": "webRequest.onAuthRequired Demo", + "version": "1.0", + "manifest_version": 3, + "background": { + "service_worker": "service-worker.js" + }, + "permissions": [ + "webRequest", + "webRequestAuthProvider" + ], + "host_permissions": [ + "https://httpbin.org/*" + ] +} diff --git a/api-samples/webRequest/http-auth/service-worker.js b/api-samples/webRequest/http-auth/service-worker.js new file mode 100644 index 00000000..c4e213ec --- /dev/null +++ b/api-samples/webRequest/http-auth/service-worker.js @@ -0,0 +1,35 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Provides credentials when an HTTP Basic Auth request is received. +chrome.webRequest.onAuthRequired.addListener( + (details, callback) => { + console.log('An authorization request has been detected'); + if (details.url == 'https://httpbin.org/basic-auth/guest/guest') { + // Creating some credentials + const username = 'guest'; + const password = 'guest'; + // Creating an auth handler to use the credentials + const authCredentials = { + authCredentials: { + username: username, + password: password + } + }; + callback(authCredentials); + } + }, + { urls: ['https://httpbin.org/basic-auth/guest/guest'] }, + ['asyncBlocking'] +);