From 00365db33b96a43416dc3fc627fb5d81338fd453 Mon Sep 17 00:00:00 2001 From: Barry de Graaff <4353213+barrydegraaff@users.noreply.github.com> Date: Wed, 29 Jun 2022 07:02:27 +0200 Subject: [PATCH] ZBUG-2858 add SOAP port to authentication context for use with ZimbraCustomAuth --- .../com/zimbra/cs/account/auth/AuthContext.java | 15 +++++++++++++++ .../java/com/zimbra/cs/service/account/Auth.java | 1 + 2 files changed, 16 insertions(+) diff --git a/store/src/java/com/zimbra/cs/account/auth/AuthContext.java b/store/src/java/com/zimbra/cs/account/auth/AuthContext.java index 9b883d77764..92e067d6c1e 100644 --- a/store/src/java/com/zimbra/cs/account/auth/AuthContext.java +++ b/store/src/java/com/zimbra/cs/account/auth/AuthContext.java @@ -33,6 +33,21 @@ public class AuthContext { */ public static final String AC_REMOTE_IP = "remoteip"; + /* + * Port as seen from ZimbraSoapContext in: + * zm-mailbox/store/src/java/com/zimbra/cs/service/admin/Auth.java + * Present in context for SOAP (web-UI and SMTP authentication) + * + * To be used with ZimbraCustomAuth extensions to distinguish + * between SMTP and web-UI authentication. + * + * Example this is true for an SMTP auth request: + * if (context.get("soapport").equals(account.getServer().getMtaAuthPort())) + * + * type: Integer + */ + public static final String AC_SOAP_PORT = "soapport"; + /* * Account name passed in to the interface. * Present in context for SOAP and http basic authentication. diff --git a/store/src/java/com/zimbra/cs/service/account/Auth.java b/store/src/java/com/zimbra/cs/service/account/Auth.java index 5e818f35bd4..a2c56860d81 100644 --- a/store/src/java/com/zimbra/cs/service/account/Auth.java +++ b/store/src/java/com/zimbra/cs/service/account/Auth.java @@ -222,6 +222,7 @@ public Element handle(Element request, Map context) throws Servi authCtxt.put(AuthContext.AC_REMOTE_IP, context.get(SoapEngine.SOAP_REQUEST_IP)); authCtxt.put(AuthContext.AC_ACCOUNT_NAME_PASSEDIN, acctValuePassedIn); authCtxt.put(AuthContext.AC_USER_AGENT, zsc.getUserAgent()); + authCtxt.put(AuthContext.AC_SOAP_PORT, zsc.getPort()); AuthMode mode = AuthMode.PASSWORD; String code = password;