diff --git a/lib/AccountManager/App.pm b/lib/AccountManager/App.pm
index e7a30eef6337778bfe4a054625a356b288ddecdc..35f8b075390f8de1bb48ddb4391b7213088917eb 100644
--- a/lib/AccountManager/App.pm
+++ b/lib/AccountManager/App.pm
@@ -403,9 +403,7 @@ sub req_complete_challenge {
         PRE_CHOMP    => CHOMP_ONE,
         INCLUDE_PATH => $templates_dir
     });
-    my $source_ip = $ENV{HTTP_X_FORWARDED_FOR} ?
-        (split(/, /, $ENV{HTTP_X_FORWARDED_FOR}))[0] :
-        $ENV{REMOTE_ADDR};
+    my $source_ip = get_source_address();
     my $user =
         $ENV{'HTTP_DISPLAYNAME'} ? $ENV{'HTTP_DISPLAYNAME'} :
         $ENV{'displayName'}      ? $ENV{'displayName'}      :
@@ -709,9 +707,7 @@ sub req_status {
     my ($self) = @_;
 
     Net::IP->require();
-    my $source_ip_string = $ENV{HTTP_X_FORWARDED_FOR} ?
-        (split(/, /, $ENV{HTTP_X_FORWARDED_FOR}))[0] :
-        $ENV{REMOTE_ADDR};
+    my $source_ip_string = get_source_address();
     my $source_ip = Net::IP->new($source_ip_string);
     my @allowed_ips_strings = $self->{configuration}->{status}->{allow} ?
         split(/, */, $self->{configuration}->{status}->{allow}) : ();
@@ -821,4 +817,10 @@ sub check_authentication {
     ) if !$ENV{'HTTP_DISPLAYNAME'};
 }
 
+sub get_source_address {
+    return $ENV{HTTP_X_FORWARDED_FOR} ?
+        (split(/, /, $ENV{HTTP_X_FORWARDED_FOR}))[0] :
+        $ENV{REMOTE_ADDR};
+}
+
 1;