Hi Victor, Thanks for bringing this to community attention
My 2 cents, I believe it will be a good addition to the audit trail functionality that fineract has and would support a good audit system for organizations that are looking for from the countries that are allowed to do so. We could put that under a configuration as suggested by Arnold so that it is by default not available for everyone. Regards, Bharath Lead Implementation Analyst | Mifos Initiative PMC Member | Apache Fineract Mobile: +91.7019635592 http://mifos.org <http://facebook.com/mifos> <http://www.twitter.com/mifos> On Thu, Jul 3, 2025 at 12:52 AM Arnold Galovics <arn...@apache.org> wrote: > Hey guys, > > I'm not up to speed on everything here. If we're talking about logging IP > addresses of the user, I'd strongly advise against it. > > There are many regulations on handling personal data which could make it > even harder to introduce Fineract into a business. For example IP addresses > are considered personal data in the context of GDPR and should be handled > accordingly. > > If Mexico has a requirement that this should be done, I'm sure this could > be a "plugin" of some kind in Fineract, or at least must be controlled with > a specific environment variable instead of just the log level. Although, > I'd really appreciate talking through rather the requirement in Mexico > because there could be other solutions solving this exact same problem but > without touching Fineract. > > Best, > Arnold > > > On Wed, Jul 2, 2025 at 8:47 PM VICTOR MANUEL ROMERO RODRIGUEZ < > victor.rom...@fintecheando.mx> wrote: > >> Hello Adam, >> >> This is the document that we have used as reference: >> >> https://www.rfc-editor.org/rfc/rfc7239.txt >> >> https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-For >> >> Regards >> >> Victor >> >> El mié, 2 jul 2025 a las 10:32, Ádám Sághy (<adamsa...@gmail.com>) >> escribió: >> >>> Hi Victor >>> >>> Thank you for sharing the business requirement that supports the ip >>> tracking capabilities! >>> >>> I was wondering whether you could share some information about how the >>> priority order of the IP header candidates was decided. >>> >>> Is there a specific reason for the ordering, or is it based on best >>> practice or precedent? >>> >>> Regards, >>> Adam >>> >>> On 2025. Jul 2., at 18:22, VICTOR MANUEL ROMERO RODRIGUEZ < >>> victor.rom...@fintecheando.mx> wrote: >>> >>> Hello Adam, >>> >>> In Mexico it is required by law to have the tracking of the activities >>> that have been done by the users (staff, clients) in the core banking >>> during the sessions. We have implemented this for the local >>> implementations. Information cannot be stored outside of the Apache >>> Fineract DB because of regulation. Of course Apache Fineract is not exposed >>> directly to the internet but we forward the original IP that is used by all >>> the electronic channels (mobile, web, wallets and any device that uses the >>> services). >>> >>> Regards >>> >>> Víctor Romero >>> >>> El mié, 2 jul 2025 a las 10:12, Ádám Sághy (<adamsa...@gmail.com>) >>> escribió: >>> >>>> Hi Victor, >>>> >>>> Thank you for raising this topic and for sharing the AI-generated >>>> description for the story. >>>> >>>> I have no objections to the use of AI-generated descriptions—they can >>>> be quite helpful in many cases. However, I would like to offer some >>>> constructive feedback on the IP tracking proposal. >>>> >>>> *On IP Tracking in Fineract:* >>>> >>>> While I understand the points raised in the story, I’m not convinced >>>> that IP tracking should be a responsibility of Fineract itself. In >>>> practice, Fineract is (and should be) never directly exposed to the >>>> internet. Standard deployment approaches ensure that it is always behind a >>>> VPN, a company proxy, or cloud load balancers. >>>> >>>> As a result, the actual client IP address is typically not visible to >>>> Fineract. Instead, it only receives internal IP addresses or those of >>>> upstream proxies, which significantly limits the usefulness of collecting >>>> IP information at the application layer. >>>> >>>> *Code Review: (*https://github.com/apache/fineract/pull/4825) >>>> >>>> The following code attempts to extract the client IP address from a >>>> variety of HTTP headers: >>>> >>>> java >>>> CopyEdit >>>> private static final String[] IP_HEADER_CANDIDATES = { >>>> "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy-Client-IP", >>>> "HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED", "HTTP_X_CLUSTER_CLIENT_IP", >>>> "HTTP_CLIENT_IP", "HTTP_FORWARDED_FOR", "HTTP_FORWARDED", "HTTP_VIA", >>>> "REMOTE_ADDR" >>>> }; >>>> public static String getClientIpAddress(HttpServletRequest request) { >>>> for (String header : IP_HEADER_CANDIDATES) { >>>> String ip = request.getHeader(header); >>>> if (ip != null && ip.length() != 0 && >>>> !"unknown".equalsIgnoreCase(ip)) { >>>> log.debug("SEND IP : {}", ip); >>>> return ip; >>>> } >>>> } >>>> log.debug("getRemoteAddr method : {}", request.getRemoteAddr()); >>>> return request.getRemoteAddr(); >>>> } >>>> >>>> My concerns with this approach are as follows: >>>> >>>> - >>>> >>>> If a third-party client sets these headers, the value cannot be >>>> trusted and is trivial to spoof. >>>> - >>>> >>>> If an internal system is responsible for propagating the correct >>>> client IP, then that system should also handle any geolocation, security >>>> filtering, or risk analysis—this is typically managed by firewalls and >>>> security appliances. >>>> - >>>> >>>> Therefore, I am not sure that handling IP addresses at the Fineract >>>> application layer adds any real value or security benefit. >>>> >>>> *Story Requirements: (* >>>> https://issues.apache.org/jira/browse/FINERACT-2314) >>>> >>>> Several use cases were listed for IP tracking: >>>> >>>> - >>>> >>>> *Security & Fraud Prevention:* Not within Fineract’s scope; there >>>> are dedicated third-party solutions for this. >>>> - >>>> >>>> *Regulatory Compliance & Legal Requirements (AML, KYC, GDPR, etc.):* >>>> Again, >>>> these should be handled by specialized systems, especially if Fineract >>>> is >>>> not directly accessible. >>>> - >>>> >>>> *Audit & Forensic Investigations:* I can understand the value here >>>> and would accept recording IP addresses for audit purposes, provided the >>>> limitations are clear. >>>> - >>>> >>>> *Geolocation-based services & risk scoring:* Again, this is out of >>>> Fineract’s scope; better handled externally. >>>> >>>> *Regarding the PR:* >>>> >>>> I understand the PR focuses on storing the caller IP address for write >>>> operations for audit and forensic purposes. While I see some value in this, >>>> it should be clear that the collected IP may not always be meaningful, and >>>> can easily be manipulated. >>>> >>>> One further question: >>>> *How was the priority order of the IP header candidates decided?* >>>> Is there a specific reason for the ordering, or is it based on best >>>> practice or precedent? >>>> >>>> @Victor and fellow community members, >>>> >>>> I’d like to hear everyone’s perspective on this topic—particularly >>>> around the inclusion of IP address tracking in Fineract and its alignment >>>> (or not) with our project’s security and architectural principles. >>>> >>>> What are your thoughts on the value and potential risks of handling >>>> client IP addresses within Fineract, versus relying on external >>>> infrastructure or third-party solutions for these functions? >>>> >>>> Looking forward to the community’s insights. >>>> >>>> Best regards, >>>> Adam >>>> >>> >>>