openconnect derailed by Pulse pre sign-in notification?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Gernot,

On Tue, Jan 23, 2018 at 7:42 AM, Gernot Hillier
<gernot.hillier at siemens.com> wrote:

> Hi there!
>
> James Ralston wrote:
>
> > Does anyone have any advice or tips for getting openconnect to
> > navigate through a pre sign-in notification?
> >
> > We are legally required to use a pre sign-in notification for our
> > Pulse VPN service:
> >
> >     https://corliss.sei.cmu.edu/
> >
> > Unfortunately, openconnect doesn't seem to understand how to
> > navigate through the pre sign-in notification.  Attempting to
> > connect to the Pulse VPN service yields this error message:
> >
> >     Failed to find or parse web form in login page
>
> We have a somehow similar issue here where Smartcard auth is not
> done by the Pulse gateway, but some other Siemens-service which
> means OpenConnect needs to dive through three additional forms. For
> now, I use something like this:
>
> @@ -657,6 +665,14 @@ int oncp_obtain_cookie(struct openconnect_info
> *vpninfo)
>                                 ret = -EINVAL;
>                                 break;
>                         }
> +               } else if (!strcmp(form_id, "login_PKI") ||
> +                          !strcmp(form_id, "MessageAccept") ||
> +                          !strcmp(form_id, "gaform")) {
> +                       form = parse_form_node(vpninfo, node, "btnSubmit");
> +                       if (!form) {
> +                               ret = -EINVAL;
> +                               break;
> +                       }
>
> Plus deactivation of some sanity checks in handle_redirect() and
> process_auth_form_cb().

Yeah, that's what I was afraid of: the only way to get past the
disclaimer form is to patch openconnect to recognize it, alas.

> However, further HTML parsing in OpenConnect feels like the wrong
> solution, and http://www.infradead.org/openconnect/juniper.html
> seems to suggest other solutions ("full compatibility may require
> actually using a web browser to log in").
>
> So we're thinking about implementing something similar like
> juniper-vpn.py from https://github.com/russdill/juniper-vpn-py which
> does our company-specific auth dance and then just calls openconnect
> with the DSID cookie...

The problem with this approach is that it necessitates calling
openconnect by hand.  We'd prefer to avoid that, because adding a new
VPN connection within NetworkManager is what our users (and most Linux
users, I suspect) are used to.  And unfortunately, NetworkManager
doesn't know how to configure a VPN interface that calls openconnect
with a custom authentication piece.

Not to mention we'd still need to patch juniper-vpn-py to understand
how to click through the disclaimer.

> That said, finding a working PKCS#11 solution for Python turned out
> to be a non-trivial task...

Indeed, it's been our experience that most user-contributed libraries
tend not to offer diverse authentication support, because the
developers of said libraries don't use anything beyond simple
username/password authentication.

Anyway, thanks for confirming that others have run into the same
issue.



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux