]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
feat: support Microsoft SSO
authorJoachim Kuebart <joachim.kuebart@gmail.com>
Tue, 9 Mar 2021 14:26:30 +0000 (15:26 +0100)
committerJoachim Kuebart <joachim.kuebart@gmail.com>
Thu, 11 Mar 2021 08:06:29 +0000 (09:06 +0100)
Signed-off-by: Joachim Kuebart <joachim.kuebart@gmail.com>
auth-juniper.c

index 5eca0dd06d1583e920186e8a9cba47c402164d19..edcd1e8cf0bb82028d518b62f2a1d51239ea1c41 100644 (file)
@@ -135,6 +135,10 @@ static int parse_input_node(struct openconnect_info *vpninfo, struct oc_auth_for
                        ret = -ENOMEM;
                        goto out;
                }
+               if (!strcmp(form->auth_id, "loginForm") &&
+                   !strcmp(opt->name, "VerificationCode") &&
+                   !can_gen_tokencode(vpninfo, form, opt))
+                       opt->type = OC_FORM_OPT_TOKEN;
        } else if (!strcasecmp(type, "username") || !strcasecmp(type, "email")) {
                opt->type = OC_FORM_OPT_TEXT;
                xmlnode_get_prop(node, "name", &opt->name);
@@ -781,6 +785,13 @@ int oncp_obtain_cookie(struct openconnect_info *vpninfo)
                                ret = -EINVAL;
                                break;
                        }
+               } else if ((form_name && !strcmp(form_name, "hiddenform")) ||
+                          (form_id && !strcmp(form_id, "formSAMLSSO"))) {
+                       form = parse_form_node(vpninfo, node, "submit");
+                       if (!form) {
+                               ret = -EINVAL;
+                               break;
+                       }
                } else {
                        char *form_action = (char *)xmlGetProp(node, (unsigned char *)"action");
                        if (form_action && strstr(form_action, "remediate.cgi")) {