LaravelStarter

laravel-oidc-auth-starter — Laravel Starter Template

By Tuurio

A Laravel-based Tuurio ID authentication sample project demonstrating the OpenID Connect Authorization Code flow, session login, protected routes, logout, and webhook reception.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-14View source

What stands out

A quick read of the recorded project description.

01

Uses the OpenID Connect Authorization Code flow, with PKCE S256 for browser clients and no client secret

02

Provides complete login and logout examples via /login, /auth/callback, /logout, and /logout/callback

03

Tokens are stored in the Laravel session and UserInfo is rendered

04

Provides a POST /webhooks/tuurio endpoint that validates the configured API key request header before logging events

05

Requires PHP 8.2+ and Composer; the README states that no Node.js or Vite build step is needed

06

Generated by syncing from the upstream Tuurio/auth_samples sample; fixes should be submitted upstream

Template Details

This is a Laravel authentication starter template for integrating Tuurio ID OpenID Connect login. The README states that it uses the Authorization Code flow, with PKCE S256 for browser and native clients and no client secret, and that redirect and post-logout redirect URIs must match exactly. The sample includes /login to initiate authorization, /auth/callback to exchange the authorization code and store tokens in the Laravel session, /logout to call the provider logout endpoint, /logout/callback to confirm the local session has been cleared, and POST /webhooks/tuurio to validate the API key request header and log events.

The runtime requires PHP 8.2+, uses Composer for dependency management, and the README explicitly states that no Node.js or Vite build step is needed. Verification commands are composer install, copying .env.example, generating the application key, and running php artisan test. The project is generated by syncing the Laravel sample from upstream Tuurio/auth_samples, and the README recommends submitting implementation fixes upstream to avoid being overwritten by the next sync.

The README does not provide information on production deployment, performance, concurrency handling, or integrations other than Tuurio ID; the webhook section only states that events are written to storage/logs/laravel.log and notes that after deployment, TUURIO_WEBHOOK_URL and TUURIO_WEBHOOK_LISTEN_PATH must be kept consistent with the actual routes.

LaravelStarter

Is it right for your project?

Use Cases

  • Integrating Tuurio ID OIDC login and session management into a Laravel project
  • Referencing implementations of protected routes and RP-initiated logout
  • Building a server-side endpoint that receives Tuurio webhooks and validates the API key request header
  • Using as Laravel sample code for learning the Authorization Code + PKCE flow

Suitable For

  • Developers using Laravel who want to integrate Tuurio ID authentication
  • Teams needing reference examples for OIDC login, logout, and webhook validation
  • Projects that already have a PHP 8.2+ and Composer environment

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    The quick start command provided in the README is npx [email protected] init --framework laravel --project-dir . --auth browser --yes --output json --campaign github_laravel --no-open --no-wait; review it yourself before running

  2. 2

    Local run: copy .env.example to .env, run composer install, run php artisan key:generate, then start with php artisan serve --host=127.0.0.1 --port=8000

  3. 3

    In the Tuurio client, configure Redirect URI http://localhost:8000/auth/callback and Post-logout Redirect URI http://localhost:8000/logout/callback

  4. 4

    Fill in .env keys such as TUURIO_ISSUER, TUURIO_CLIENT_ID, TUURIO_REDIRECT_URI, and TUURIO_SCOPE as described in the README; webhook-related keys must match the tenant configuration

  5. 5

    Do not paste credentials, client secrets, authorization codes, tokens, or session cookies into conversations; browser and native apps are public clients and should not include a client secret

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version of the public repository under the Apache-2.0 license; the free scope is the code of that version and does not mean external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution are permitted; when distributing, include the Apache-2.0 license.
  • Modified files must prominently indicate changes and retain relevant copyright, patent, trademark, and attribution notices.
  • If the original project includes a NOTICE file, applicable attribution notices in it must be retained when distributing derivative works.
  • The license includes an applicable contributor patent grant; initiating patent litigation as described in the license terminates that patent grant, and no trademark rights are granted.
  • The code is provided as-is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they cannot be judged solely by the code's Apache-2.0 license.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
  • This template is generated by syncing the Laravel sample from upstream Tuurio/auth_samples; the README recommends submitting implementation fixes upstream, otherwise they may be overwritten by the next sync release.
  • The quick start depends on running the Tuurio configuration command npx [email protected]; you must review and approve that command yourself.
  • You must complete a secure browser handoff flow yourself to finish Tuurio ID configuration.
  • Do not paste credentials, client secrets, authorization codes, tokens, session cookies, or environment file contents into conversations; browser and native apps are public clients and should not include a client secret.
  • A Tuurio ID tenant issuer URL (TUURIO_ISSUER) is required to run the authentication flow.
  • The Tuurio client secret TUURIO_CLIENT_SECRET must be filled in .env.
  • The webhook endpoint requires TUURIO_WEBHOOK_API_KEY to be configured in order to pass request header validation.
  • If the configuration flow generates a live webhook, .env will contain endpoint metadata that must be kept consistent with the tenant configuration.
  • If configured before deployment with only a placeholder domain, update the webhook endpoint in the Tuurio admin console once the final URL is determined.
  • Do not expose the webhook route without validating the configured API key request header; ensure TUURIO_WEBHOOK_API_KEY_HEADER and TUURIO_WEBHOOK_API_KEY match the tenant configuration.
View Original Text Basis

no-charge, royalty-free, irrevocable copyright license

Original License Text

> Generated from [`Tuurio/auth_samples/auth_samples_laravel`](https://github.com/Tuurio/auth_samples/tree/main/auth_samples_laravel). Submit implementation fixes upstream so they are not replaced by the next synchronized release.

Original README

npx [email protected] init --framework laravel --project-dir . --auth browser --yes --output json --campaign github_laravel --no-open --no-wait

Original README

4. Approve the exact command, then complete the secure browser handoff yourself.

Original README

Never paste credentials, client secrets, authorization codes, tokens, session cookies, or environment-file contents into an agent chat. Browser and native applications are public clients and must not contain a client secret.

Original README

TUURIO_ISSUER=https://<tenantId>.id.tuurio.com

Original README

TUURIO_CLIENT_SECRET=YOUR_CLIENT_SECRET

Original README

TUURIO_WEBHOOK_API_KEY=

Original README

- If provisioning generated a live webhook for you, the `.env` already contains the endpoint metadata

Original README

- If you provisioned the sample before deployment and only had a placeholder domain, update the webhook endpoint in the Tuurio admin after the final URL is known.

Original README

- Do not expose the webhook route without checking the configured API key header. This sample expects `TUURIO_WEBHOOK_API_KEY_HEADER` and `TUURIO_WEBHOOK_API_KEY` to be set consistently with the tenant webhook configuration.

Original README
https://github.com/Tuurio/laravel-oidc-auth-starter/blob/main/LICENSEhttps://github.com/Tuurio/laravel-oidc-auth-starter/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-14. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 80 / 100
Technologies
Laravel
Website type
Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-08-08
Screenshot last checked
2026-10-14

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Laravel as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: codex-user-requested-batch-review-20261017 · 2026-10-16

Inspect the recorded source material

SHA-256: 48eb959b6e7ca49d8d4dc3c5f5734e11dd99893e0e27d293e677af5ad80e373b

2026-10-14T05:04:59.785Z

Source file / repository
# Laravel OIDC Auth Starter

Laravel authentication starter for Tuurio ID with sessions, protected routes, logout, and OpenID Connect Authorization Code flow.

[![Verify template](https://github.com/Tuurio/laravel-oidc-auth-starter/actions/workflows/verify.yml/badge.svg)](https://github.com/Tuurio/laravel-oidc-auth-starter/actions/workflows/verify.yml)

![Laravel OIDC Auth Starter social preview](.github/social-preview.png)

> Generated from [`Tuurio/auth_samples/auth_samples_laravel`](https://github.com/Tuurio/auth_samples/tree/main/auth_samples_laravel). Submit implementation fixes upstream so they are not replaced by the next synchronized release.

## What you get

- Standards-based OpenID Connect authentication with framework-native integration.
- Exact redirect and post-logout redirect handling.
- Protected-route and logout examples.
- A reviewed, pinned Tuurio provisioning workflow.

## Quickstart

1. Create a repository with **Use this template** or clone this repository.
2. Follow the framework-specific prerequisites below.
3. Review and run this pinned provisioning command:

```bash
npx [email protected] init --framework laravel --project-dir . --auth browser --yes --output json --campaign github_laravel --no-open --no-wait
```

4. Approve the exact command, then complete the secure browser handoff yourself.
5. Run the build and verify one real sign-in and sign-out.

Never paste credentials, client secrets, authorization codes, tokens, session cookies, or environment-file contents into an agent chat. Browser and native applications are public clients and must not contain a client secret.

## Runtime and verification

- Runtime: PHP 8.2+
- Package manager: Composer
- Verification: `composer install --no-interaction && cp .env.example .env && php artisan key:generate && php artisan test`

## Security model

This starter uses OpenID Connect Authorization Code flow. Browser and native clients use PKCE S256 and contain no client secret. Redirect and post-logout redirect URIs must match exactly. Identity comes from the established OIDC integration or an authenticated UserInfo request; decoded JWT payloads are never treated as validation. Keep generated local environment files ignored and never commit tokens or credentials.

## Framework instructions

# Tuurio Auth Laravel Demo

A server-rendered Laravel sample that signs in with OIDC, keeps tokens in the Laravel session, renders UserInfo, supports RP-initiated logout, and exposes a webhook endpoint with API key header validation.

## Integration guide

- Detailed integration guide: [Laravel example page](https://id.tuurio.com/public/developers/examples/laravel)
- General developer docs: [Tuurio ID developers](https://id.tuurio.com/public/developers)

## Setup

```bash
cd auth_samples_laravel
cp .env.example .env
composer install
php artisan key:generate
php artisan serve --host=127.0.0.1 --port=8000
```

Open `http://localhost:8000`.

No Node.js or Vite build step is required.

## Required client URLs

Configure your Tuurio client with these redirect URLs:

```text
Redirect URI: http://localhost:8000/auth/callback
Post-logout Redirect URI: http://localhost:8000/logout/callback
```

## `.env` keys

```env
TUURIO_ISSUER=https://<tenantId>.id.tuurio.com
TUURIO_CLIENT_ID=laravel-demo
TUURIO_CLIENT_SECRET=YOUR_CLIENT_SECRET
TUURIO_REDIRECT_URI=http://localhost:8000/auth/callback
TUURIO_POST_LOGOUT_REDIRECT_URI=http://localhost:8000/logout/callback
TUURIO_SCOPE=openid profile email
TUURIO_WEBHOOK_ID=
TUURIO_WEBHOOK_URL=
TUURIO_WEBHOOK_EDIT_URL=
TUURIO_WEBHOOK_SIGNING_SECRET=
TUURIO_WEBHOOK_LISTEN_PATH=/webhooks/tuurio
TUURIO_WEBHOOK_API_KEY_HEADER=X-Tuurio-Webhook-Key
TUURIO_WEBHOOK_API_KEY=
```

## What is included

- `/login` starts Authorization Code + PKCE
- `/auth/callback` exchanges the code and stores tokens in the Laravel session
- `/logout` calls the provider logout endpoint with `client_id + post_logout_redirect_uri`
- `/logout/callback` confirms the local session is gone
- `POST /webhooks/tuurio` validates the configured API key header and logs incoming events

## Webhook notes

- Incoming webhook payloads are logged to `storage/logs/laravel.log`
- The sample validates the configured API key header before accepting the event
- If provisioning generated a live webhook for you, the `.env` already contains the endpoint metadata

## Webhook deployment notes

- If your deployed app already has a stable public URL, set `TUURIO_WEBHOOK_URL` to that final endpoint and keep `TUURIO_WEBHOOK_LISTEN_PATH` aligned with your Laravel route.
- If you provisioned the sample before deployment and only had a placeholder domain, update the webhook endpoint in the Tuurio admin after the final URL is known.
- Keep `TUURIO_WEBHOOK_EDIT_URL` if provisioning filled it in. It points back to the webhook configuration you may need to adjust later.
- Do not expose the webhook route without checking the configured API key header. This sample expects `TUURIO_WEBHOOK_API_KEY_HEADER` and `TUURIO_WEBHOOK_API_KEY` to be set consistently with the tenant webhook configuration.


## License

Licensed under the Apache License, Version 2.0. See [`LICENSE`](./LICENSE).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.