From 71d71e51db30ab9816977523313a32df941114ee Mon Sep 17 00:00:00 2001 From: Alexey Ivanov Date: Fri, 12 Apr 2024 23:08:24 +0500 Subject: [PATCH] OpenVPN certificate authorization with cn_username in 'email' format --- src/Cedar/Protocol.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Cedar/Protocol.c b/src/Cedar/Protocol.c index 6075f3ff..3829b563 100644 --- a/src/Cedar/Protocol.c +++ b/src/Cedar/Protocol.c @@ -6773,7 +6773,6 @@ PACK *PackLoginWithOpenVPNCertificate(char *hubname, char *username, X *x) p = NewPack(); PackAddStr(p, "method", "login"); - PackAddStr(p, "hubname", hubname); if (IsEmptyStr(username)) { @@ -6782,12 +6781,25 @@ PACK *PackLoginWithOpenVPNCertificate(char *hubname, char *username, X *x) FreePack(p); return NULL; } + UniToStr(cn_username, sizeof(cn_username), x->subject_name->CommonName); - PackAddStr(p, "username", cn_username); + + if(strchr(cn_username, '@') != NULL) + { + PackAddStr(p, "username", strtok(cn_username, "@")); + PackAddStr(p, "hubname", strtok(NULL, "")); + } + else + { + PackAddStr(p, "username", cn_username); + PackAddStr(p, "hubname", hubname); + } + } else { PackAddStr(p, "username", username); + PackAddStr(p, "hubname", hubname); } PackAddInt(p, "authtype", AUTHTYPE_OPENVPN_CERT);