Debug School

rakesh kumar
rakesh kumar

Posted on

How to Skip Re-Authentication for Logged-In Users in keycloack

Problem
Users already logged in locally should not re-open Keycloak login flow.

Goal
When /keycloak/login is hit and Laravel session exists, redirect directly to welcome/home URL.

Step 1: Add early auth check in redirect function
In keylockredirect(Request $request):

if (Auth::check()) {
    return $this->redirectToWelcome($request, '[KC][REDIRECT] local session exists - redirect welcome');
}
Enter fullscreen mode Exit fullscreen mode

This stops unnecessary Keycloak round-trips.

Step 2: Create env-based welcome resolver

private function resolveWelcomeUrl(): string
{
    $configuredBase = rtrim((string) config('app.url', ''), '/');
    if ($configuredBase !== '') {
        return $configuredBase . '/';
    }

    return url('/');
}
Enter fullscreen mode Exit fullscreen mode

APP_URL controls domain-specific target (motoshare.in, motoshare.jp, etc.).

Step 3: Centralize redirect + logging

private function redirectToWelcome(Request $request, string $logMessage = ''): RedirectResponse
{
    $welcomeUrl = $this->resolveWelcomeUrl();

    if ($logMessage !== '') {
        Log::info($logMessage, [
            'auth_id' => Auth::id(),
            'to' => $welcomeUrl,
            'host' => $request->getHost(),
        ]);
    }

    return redirect()->to($welcomeUrl);
}
Enter fullscreen mode Exit fullscreen mode

Reusable in callback edge cases too.

Step 4: Handle stale callback states
In callback branches like missing/duplicate state, redirect to welcome instead of forcing login again.

Step 5: Configure environment
Set:

motoshare.in (India)
motoshare.jp (Japan)
Enter fullscreen mode Exit fullscreen mode

Top comments (0)