Closed schlomo closed 1 year ago
It works fine for me
oauth2c on feature/callback-timeout [$] via 🐹 v1.21.0
❯ go run . https://oauth2c.us.authz.cloudentity.io/oauth2c/demo \
--client-id cauktionbud6q8ftlqq0 \
--client-secret HCwQ5uuUWBRHd04ivjX5Kl0Rz8zxMOekeLtqzki0GPc \
--response-types code \
--response-mode query --callback-timeout 10s \
--grant-type authorization_code \
--auth-method client_secret_basic \
--scopes openid,email,offline_access
┌───────────────────────────────────────────────────────────────────────┐
| Issuer URL | https://oauth2c.us.authz.cloudentity.io/oauth2c/demo |
| Grant type | authorization_code |
| Auth method | client_secret_basic |
| Scopes | openid, email, offline_access |
| Response types | code |
| Response mode | query |
| PKCE | false |
| Client ID | cauktionbud6q8ftlqq0 |
| Client secret | HCwQ5uuUWBRHd04ivjX5Kl0Rz8zxMOekeLtqzki0GPc |
└───────────────────────────────────────────────────────────────────────┘
Authorization Code Flow
# Request authorization
GET https://oauth2c.us.authz.cloudentity.io/oauth2c/demo/oauth2/authorize
Query params:
client_id: cauktionbud6q8ftlqq0
nonce: 5wztVEgToh3pbEdjkDZ48s
redirect_uri: http://localhost:9876/callback
response_mode: query
response_type: code
scope: openid email offline_access
state: X5twYCGfe24Pgo2zg2YSRD
Open the following URL:
https://oauth2c.us.authz.cloudentity.io/oauth2c/demo/oauth2/authorize?client_id=cauktionbud6q8ftlqq0&nonce=5wztVEgToh3pbEdjkDZ48s&redirect_uri=http%3A%2F%2Flocalhost%3A9876%2Fcallback&response_mode=query&response_type=code&scope=openid+email+offline_access&state=X5twYCGfe24Pgo2zg2YSRD
ERROR interrupted
exit status 1
In the code we handle the INT and TERM signals.
go func() {
defer close(done)
if serr := srv.ListenAndServe(); serr != http.ErrServerClosed {
err = serr
}
}()
signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
timeout := time.After(clientConfig.CallbackTimeout)
select {
case <-signalChan:
return request, errors.New("interrupted")
case <-timeout:
return request, errors.New("timeout")
case <-done:
return request, err
}
How can I reproduce it? What system and terminal are you using?
Good point. Now I can't reproduce it but when I opened the issue I had it all the time. My problem was aborting with Ctrl-C while waiting for the call back to happen.
I use iTerm2 and fish shell.
I guess we can close this and I'll open it again when I manage to reproduce. Thanks for checking it out.
Maybe this will help https://github.com/cloudentity/oauth2c/pull/79 but I am not able to reproduce it
I noticed that Ctrl-C doesn't abort while waiting for the callback to the redirect URL. If the redirect URL is not allowed for the OAuth2 client, then this tool will wait forever.
Please add support for aborting via Ctrl-C