-
-
Notifications
You must be signed in to change notification settings - Fork 169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow to use default browser for SAML auth window #98
Comments
It's a good suggestion, but it's not that easy to implement on the Linux system. The primary problem is the client couldn't communicate with the default browser to get the authentication token, even though I could launch the default browser. |
I think proprietary client is able to use the default browser to share session with SAML login. So communication with browser part should be doable. I know there are technologies like selenium that allow to start a browser, manage window state, modify/read DOM. Here is a client for c++ https://github.com/sekogan/webdriverxx |
@anatol Thanks. I have some knowledge of browser drivers and had used Protractor to perform the E2E testing. I will take your advice and see if the solution is feasible. Thanks. |
The proprietary client works with an external browser by providing a callback URI to the SAML provider; something like |
As an alternative, this project could start up a temporary HTTP server listening to a specific port on localhost. That way, after the authentication process, the browser would connect to the local server to finish up sending the required data back to the daemon. MozWire project implements this flow. It is a non-official client to the MozillaVPN service, and it also requires a browser authentication. If this idea gets implemented here, I'd suggest to also display the URL that it tries to open in the browser, just in case launching the browser fails, or if it opens the wrong browser/profile. |
If anyone wants to implement this, here is how you need to do it (at least based on my config):
I don't think we can use an http server since as users we're not able to configure how the GlobalProtect server behaves. |
@BrendanBall any chance you could share the script you're using to do all those things? I'm not expecting it to be anything I could use directly, but would help a lot when writing my own. Any maybe someone can evolve it into something more general :) |
I don't have a script that does all of this, but the flow is mostly the same as is currently implemented. You just need to add the I wanted to try integrate it with NetworkManager, but turns out NetworkManager vpn plugins are not that straightforward and lacks a lot of documentation and I'm not a C programmer, so it would just take too much time to figure out. If you actually have a GlobalProtect account to test against, it shouldn't be too difficult to figure out. |
@BrendanBall Gotcha, thanks for the clarification! |
I've just pushed a draft version for openconnect. So there is no need to change NM-openconnect. |
Supported in 2.0.0-beta5, you can enable this option in settings. Closing. |
@BredanBall: the browser returns something like: globalprotectcallback:cas-as=1&un=[email protected]&token=very_long_string How shall I use the token in the openconnect client? Thank you, Mirro |
I use GlobalProtect-openconnect for my VPN and it works great.
Though current login flow has one inconvenience. When I login to my VPN it opens SAML login page in a separate window. I type the login. Then I open my browser to get into internal resources (like JIRA bug tracker) and now I need to type the password and use Yubikey for authentication one more time.
It would be great if the authentication information reused both for VPN application and the browser session. Some other clients (like proprietary GlobalProtect) open SAML in the default browser and once I authenticate there it starts working both for VPN itself and browser. Could you please similar functionality to GlobalProtect-openconnect as well?
The text was updated successfully, but these errors were encountered: