diff --git a/lib/Kalamar/Plugin/Auth.pm b/lib/Kalamar/Plugin/Auth.pm
index ec83b02..322019b 100644
--- a/lib/Kalamar/Plugin/Auth.pm
+++ b/lib/Kalamar/Plugin/Auth.pm
@@ -427,6 +427,40 @@
     }
   );
 
+  # Get info for registered client
+  $app->helper(
+    'auth.client_info_p' => sub {
+      my $c = shift;
+      my $client_id = shift;
+
+      # Get list of registered clients
+      my $r_url = Mojo::URL->new($c->korap->api)->path('oauth2/client/')->path($client_id);
+
+      my $form = {
+        super_client_id => $client_id,
+        super_client_secret => $client_secret,
+      };
+
+      # Get the list of all clients
+      return $c->korap_request(POST => $r_url, {} => form => $form)->then(
+        sub {
+          my $tx = shift;
+          my $json = $tx->result->json // {};
+
+          # Response is fine
+          if ($tx->res->is_success) {
+            return Mojo::Promise->resolve($json);
+          };
+
+          $c->log->error($c->dumper($tx->res->to_string));
+
+          # Failure
+          return Mojo::Promise->reject($json->{error_description} // 'Client unknown');
+        }
+      );
+    }
+  );
+
 
   # Get a list of registered clients
   $app->helper(
@@ -1115,27 +1149,16 @@
 
         my $client_id = $v->param('client_id');
 
-        my $client_information = $c->auth->client_list_p->then(
+        my $client_information = $c->auth->client_info_p($client_id)->then(
           sub {
-            my $clients = shift;
-            foreach (@$clients) {
-              if ($_->{client_id} eq $client_id) {
-                $c->stash(client_name => $_->{'client_name'});
-                $c->stash(client_type => $_->{'client_type'});
-                $c->stash(client_desc => $_->{'client_description'});
-                $c->stash(client_url => $_->{'client_url'});
-                $c->stash(redirect_uri_server => $_->{'client_redirect_uri'});
-                last;
-              };
-            };
+            my $cl = shift;
+            $c->stash(client_name => $cl->{'client_name'});
+            $c->stash(client_type => $cl->{'client_type'});
+            $c->stash(client_desc => $cl->{'client_description'});
+            $c->stash(client_url => $cl->{'client_url'});
+            $c->stash(redirect_uri_server => $cl->{'client_redirect_uri'});
           }
-        )->catch(
-          sub {
-            $c->stash(client_type => 'PUBLIC');
-            $c->stash(client_name => $v->param('client_id'));
-            return;
-          }
-        )->finally(
+        )->then(
           sub {
 
             # Get auth token
@@ -1149,6 +1172,12 @@
             # Grant authorization
             return $c->render(template => 'auth/grant_scope');
           }
+        )->catch(
+          sub {
+            my $error = shift;
+            $c->notify(error => $error);
+            return $c->redirect_to('oauth-settings');
+          }
         );
       }
     )->name('oauth-grant-scope');
