diff --git a/lib/AccountManager/App.pm b/lib/AccountManager/App.pm
index 9bf24e63421403c5ed78792a169ba9e0e9457198..3440f93a20a23e87022b5062be3b978f7709b642 100644
--- a/lib/AccountManager/App.pm
+++ b/lib/AccountManager/App.pm
@@ -407,7 +407,8 @@ sub req_select_email {
     $self->respond(
         template => 'select_email.tt2.html',
         data     => {
-            sp => $sp,
+            federation => $federation,
+            sp         => $sp,
         }
     );
 }
@@ -415,6 +416,29 @@ sub req_select_email {
 sub req_complete_challenge {
     my ($self) = @_;
 
+    my $federation = $self->{in}->{federation};
+
+    if (!$federation) {
+        $self->{logger}->error("Missing parameter: federation");
+        $self->respond(
+            template => 'errors.tt2.html',
+            data     => {
+                errors  => [ "missing_federation" ]
+            }
+        );
+    }
+
+    my $file = $self->{configuration}->{federations}->{$federation};
+    if (!$file) {
+        $self->{logger}->error("Incorrect parameter: federation");
+        $self->respond(
+            template => 'errors.tt2.html',
+            data     => {
+                errors  => [ "invalid_federation" ]
+            }
+        );
+    }
+
     unless ($self->{in}->{entityid}) {
         $self->{logger}->error("Missing parameter entityid");
         $self->respond(
@@ -584,8 +608,9 @@ sub req_complete_challenge {
     $self->respond(
         template  => 'complete_challenge.tt2.html',
         data     => {
-            email    => $self->{in}->{email},
-            entityid => $self->{in}->{entityid},
+            federation => $federation,
+            entityid   => $self->{in}->{entityid},
+            email      => $self->{in}->{email},
         }
     );
 }
diff --git a/templates/web/complete_challenge.tt2.html b/templates/web/complete_challenge.tt2.html
index 2ff2529a3fb7e997aadebdcca6530f8ac94a4631..adb2ff741429b7a08e7fe04f664523c7bf9933c1 100644
--- a/templates/web/complete_challenge.tt2.html
+++ b/templates/web/complete_challenge.tt2.html
@@ -18,6 +18,7 @@
         <label for="token">[% lh.maketext("Please provide the validation token here:") %]</label>
         <br/>
         <input name="token" value="" id="token" type="text" class="required error"/>
+        <input type="hidden" name="federation" value="[% federation %]"/>
         <input type="hidden" name="entityid" value="[% entityid %]"/>
         <input type="hidden" name="email" value="[% email %]"/>
     </div>
diff --git a/templates/web/select_email.tt2.html b/templates/web/select_email.tt2.html
index 2672807d8966430d80a1a71e51f685faf19cf274..010fd34f1d8394cf60fc52ae36c24fc56df0b9f2 100644
--- a/templates/web/select_email.tt2.html
+++ b/templates/web/select_email.tt2.html
@@ -21,6 +21,7 @@
         <br/>
         [% END %]
         <div class="callout primary">[% lh.maketext("Those email addresses have been extracted from your service metadata.") %]</div>
+        <input type="hidden" name="federation" value="[% federation %]"/>
         <input type="hidden" name="entityid" value="[% sp.entityid %]"/>
     [% ELSE %]
         <p>