Closed lazerlabs closed 1 month ago
Hey @lazerlabs many thanks for checking out IBeam and introducing your own addition πAlso thanks for the detailed report.
As for the issue you're describing, there's a very similar conversation happening with another user in this Issue: https://github.com/Voyz/ibeam/issues/185 I suggest you have a look and attempt to debug it in a similar manner as I describe there. Indeed, potentially IBKR could have changed something, although unfortunately it still seems to work on my end hence it's quite difficult for me to implement a fix without your help in debugging it. I suggest we continue this discussion there, unless you feel there is a substantial difference.
I noticed this behaviour while implementing an http_callback TFA handler (see my fork: https://github.com/lazerlabs/ibeam/blob/master/ibeam/src/two_fa_handlers/http_callback.py) but it happens the same with voyz/ibeam:0.5.3 (I can provide more details about how this would work, and I would send a pull request, but I wanted to test it for a while and atm I can't for this issue)
Thanks for sharing that! I'm understanding that in your setup the 2FA code is being received and parsed by some external server, and that response is then fed into this Flask server you've developed? If that is the case then while it's great to see the addition, but I don't think it would be necessary to include it in IBeam. The ExternalRequestHandler provides an identical functionality, except that instead of storing the 2FA code within the handler, the code would to be stored on that external server. Let me know if I'm missing something here though.
Thanks for the pointer to the other issue, I'll try to debug it.
Regarding http_callback it actually works the other way round compared top ExternalRequestHandler.
http_callback spawns a web server which wait to receive the security code.
So I can automatically send the code to ibeam as soon as the SMS is received. There is one handler that does this for Android, but this works with iphone:
1) I have created a cloudflare tunnel to the ibeam instance (so I don't have to expose the web server directly). You can however forward the port on the router. 2) On my iphone where IBKR number is, I have created an automation (see the screenshots) that extract the code from the SMS and send it to the URL via a PUT method
Now, there are other way to implemement that, like using the iphone automation to send it to a dropbox file (which can have a URL) and use the ExternalRequestHandler to get it from there. But I would have to deal with existing code and delete it. Alternatively, I could have another web server somewhere or use S3 with a TTL policy which delete the code after it's downloaded by the ExternalRequestHandler.
However I like this approach because is immediate (sms -> ibeam) and have it automatically expire after "duration".
I tested the automation for a while independently from ibeam, now I'm in the integration phase (issues aside).
Ohhh! I didn't think about doing it directly from the phone. That's a very clever idea, apologies for my ignorance to this approach in the previous reply. Yeah, that could be a great addition.
Would you be up for writing a WiKi page on how to set up your phone to send the SMS to a custom URL? That would be of great help to other users if we integrated your handler to IBeam.
Great job coming up with that ππ
@lazerlabs it seems a solution was found for the problem with authentication: https://github.com/Voyz/ibeam/issues/185#issuecomment-2122919775 Can you see if this works for you too?
@Voyz I decided to abandon my cumbersome development and go with the EXTERNAL_REQUEST using two AWS lambda functions. Essentially, I can still use the iphone automation to read the code from the text and send it via an lambda endpoint to a AWS SQS queue, then let the EXTERNAL_REQUEST handler read it via another lambda endpoint.
The documentation is still not very detailed by it's essentially described here: https://github.com/lazerlabs/lambda_sqs/wiki/Using-lambda%E2%80%90sqs-for-IBKR-Two%E2%80%90Factor-Authentication-with-IBeam
And this is the lambda-sqs implementation.
I am still having issue with the authentication using the 0.5.4 version, but I haven't yet tried the solution in the comment you linked. I'll do that later today hopefully.
Thanks for the update @lazerlabs glad to hear you've found another solution - thanks for outlining it in detail. Let me know how the rest goes π€
The solution suggested in the other issue worked fine for me as well, and after few tweaks also the iPhone automation + lambda/sqs thing works for 2FA.
Awesome!
πππ super happy to hear that! Good luck with the trading!
I could write a wiki with the step-by-step instruction, at least how to use iPhone automation to forward the code from the text message.
Describe the bug I'm trying to run latest docker image available but when I run it the authentication times out
See below for the full log.
To Reproduce Steps to reproduce the behavior:
Environment IBeam version: 0.5.3 Docker image or standalone: docker OS: Linux ubuntuserver 5.15.0-106-generic #116-Ubuntu SMP Wed Apr 17 09:17:56 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy
Additional context I noticed this behaviour while implementing an http_callback TFA handler (see my fork: https://github.com/lazerlabs/ibeam/blob/master/ibeam/src/two_fa_handlers/http_callback.py) but it happens the same with voyz/ibeam:0.5.3
(I can provide more details about how this would work, and I would send a pull request, but I wanted to test it for a while and atm I can't for this issue)
Here's the full log:
Suggest a Fix Maybe the client portal page layout changed again?