Search code examples
laravelgoogle-chrome-extensionoauth-2.0single-sign-onlaravel-passport

ERR_UNSAFE_REDIRECT when Laravel Passport redirect URL points to a Chrome extension


I've some trouble with authenticating a Google Chrome extension with my Laravel project. I used Chrome identity library for client-side and Passport in server-side. Everything work well till Passport tries to redirect to Chrome extension URL (as callback URL).

This is the client-side method:

let httpBuildQuery = require('http-build-query');

    let auth_url = 'https://my-laravel-project/oauth/authorize',
		client_id = '<client-id>',
		redirect_url = "chrome-extension://<ext-id>/pages/panel.html",
		auth_params = {
		    client_id: client_id,
		    redirect_uri: redirect_url,
		    response_type: 'token',
		    scope: ''
		};

		auth_url += '?' + httpBuildQuery(auth_params);
				
		chrome.identity.launchWebAuthFlow({url: auth_url, interactive: true}, function(responseUrl) {
			console.log(responseUrl);
		});

Chrome gives me this error: Google Chrome console error

I even try to put auth URL directly in the browser but I get an ERR_UNSAFE_REDIRECT.

Everything should be set correctly, even in manifest.json. Does someone know why this happens? I really appreciate your help.

Thanks in advance.


Solution

  • Seems that Chrome considers safe only redirect with HTTP/HTTPS URL. The only way that I found to fix this problem is to create a login form based on Personal access token method.