Comments (7)
I think I've figured it out. Related to symfony/symfony#37980.
Once I added TRUSTED_PROXIES, not only did I get the debug toolbar but my redirect was correct and I logged in locally as expected!
from oauth2-client-bundle.
Ngrok should help with forwarding a temporary real URL to your localhost app - that's good for debugging and development, but there're also many alternatives to ngrok over the internet.
from oauth2-client-bundle.
Hey @tacman , isn't the target URL is something that should be specified on the third-party provider side? I.e. in the GitHub/Facebook/Google app configuration? To me it sounds like you specify redirect URL with http
instead of https
that might be kind of OK if we're talking about debugging/development. Or could please link to the code where we force this http
on our side?
from oauth2-client-bundle.
I'll dig in some more to reproduce it. I'm just setting the path, but it looks like it should return https.
Question: What do you use to test logging in with google? I can't put https://oauth-demo.wip in as the redirect URL, so I probably need to set up some sort of proxy that redirects to my local machine.
from oauth2-client-bundle.
Thanks. No matter what I do, I can't get login with Google to work.
Using ngrok, I get through authorizing my account, then when it redirects back, I get
Error fetching OAuth credentials: "redirect_uri_mismatch".
The ngrok logs
GET /auth/connect/controller/google 403 Forbidden
GET /auth/social_login/google 200 OK
GET /auth/social_login/google 500 Internal Server Error
The PHP logs
[Application] Feb 25 16:53:29 |DEBUG | APP Notified event "Symfony\Component\Security\Http\Event\LoginFailureEvent" to listener "Symfony\Component\Security\Http\EventListener\RememberMeListener::clearCookie". event="Symfony\\Component\\Security\\Http\\Event\\LoginFailureEvent" listener="Symfony\\Component\\Security\\Http\\EventListener\\RememberMeListener::clearCookie"
[Application] Feb 25 16:53:29 |DEBUG | SECURI The "Survos\AuthBundle\Security\Authenticator" authenticator set the response. Any later authenticator will not be called authenticator="Survos\\AuthBundle\\Security\\Authenticator"
[PHP ] [Sun Feb 25 10:53:29 2024] 127.0.0.1:34590 [403]: GET /auth/connect/controller/google?state=d0223926fa02e06844a7ebdb4cc29556&code=4%2F0AeaYSHD_Bgaedg32IMV_wzsCtCmDHgn3GfPNhDH0_7ymuoNIxh-EOXik6AVCugeLWfwBeA&scope=email+profile+openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&authuser=0&prompt=consent
[PHP ] [Sun Feb 25 10:53:29 2024] 127.0.0.1:34590 Closing
[Web Server ] Feb 25 10:53:29 |WARN | SERVER GET (403) /auth/connect/controller/google?state=d0223926fa02e06844a7ebdb4cc29556&code=4%2F0AeaYSHD_Bgaedg32IMV_wzsCtCmDHgn3GfPNhDH0_7ymuoNIxh-EOXik6AVCugeLWfwBeA&scope=email+profile+openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&authuser=0&prompt=consent ip="127.0.0.1"
Alas, I'm stuck and don't know how to debug this. It's not making it to "connect", as I have a dd() there, so it must be generating that error within a listener.
Any suggestions? Or even pointing me to a working github repo, I'll clone it and add my own keys just to get something to work.
Thanks.
from oauth2-client-bundle.
After an embarrassingly long time investigating, the issue is somewhere in here, AbstractProvider.php
public function createProvider($class, array $options, ?string $redirectUri = null, array $redirectParams = [], array $collaborators = [])
{
if (null !== $redirectUri) {
$redirectUri = $this->generator
->generate($redirectUri, $redirectParams, UrlGeneratorInterface::ABSOLUTE_URL);
$options['redirectUri'] = $redirectUri;
}
The generator at this point is CompiledUrlGenerator, which generates http rather than https.
Any suggestions?
from oauth2-client-bundle.
My solution is to force https
/**
* Creates a provider of the given class.
*
* @param string $class
*/
public function createProvider($class, array $options, ?string $redirectUri = null, array $redirectParams = [], array $collaborators = [])
{
if (null !== $redirectUri) {
$redirectUri = $this->generator
->generate($redirectUri, $redirectParams, UrlGeneratorInterface::ABSOLUTE_URL);
$redirectUri = str_replace('http:','https:', $redirectUri);
$options['redirectUri'] = $redirectUri;
}
return new $class($options, $collaborators);
}
There's likely a better way, but I don't know what it is.
from oauth2-client-bundle.
Related Issues (20)
- json_login + GoogleAuthenticator
- How to get the authenticator to protect all routes if not logged in? HOT 1
- Redirection to login page if not authenticated not working HOT 4
- Does anyone know if this is vulnerable to this hack, token switching
- connect client to server type generic
- test
- <script>alert("asd")</script>
- Change examples to use #[Route()] attributes HOT 1
- Error fetching OAuth credentials: "Missing required parameter [code_verifier]. HOT 3
- SaveAuthFailureMessage trait incompatible with symfony 7
- How to use Google login on Symfony which is used on Apache2 Reverse Proxy? HOT 2
- Unable to do functional tests with PHPUnit since upgrading to new auth system
- Update documentation, drop unmaintained Symfony HOT 5
- Demo app: login with github HOT 6
- ISSUE : Keycloak v20 don't work HOT 1
- "Invalid state parameter passed in callback URL" error in API REST context. HOT 1
- Enhancing Authentication Integration in SonataAdminBundle with Symfony Security
- check-sso HOT 1
- Branch renamed from `master` -> `main`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from oauth2-client-bundle.