kinde-oss / kinde-auth-php
Kinde PHP SDK for authentication
2.3.0
2025-07-30 07:43 UTC
Requires
- php: ^7.4 || ^8.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- firebase/php-jwt: ^6.10
- guzzlehttp/guzzle: ^7.3
- guzzlehttp/psr7: ^1.7 || ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.5
- phpunit/phpunit: ^8.0 || ^9.0
- dev-master
- 2.3.0
- 2.1.1
- 2.0.1
- 2.0.0
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.1
- 1.2.0
- 0.0.3
- 0.0.2
- 0.0.1
- dev-david/update/composer_version
- dev-david/update/version_2
- dev-david/fix/m2m_conflict
- dev-david/update/jwks
- dev-david/update/sessions
- dev-david/fix/storage_expiry_error
- dev-david/update/version
- dev-david/fix/jwt_decoding
- dev-revert-19-modify/update-sdk-constructor-and-readme
- dev-fix/cookie-options
- dev-feat/add-more-url-params
- dev-david/update/additional_params
- dev-david/update/cookies
- dev-rai/set-version-to-121
- dev-rai/update-version
- dev-rai/update-composer-json
- dev-rai/update-composer-file
- dev-rai/readme-update
This package is not auto-updated.
Last update: 2025-07-31 11:15:03 UTC
README
The official PHP SDK for Kinde authentication and management APIs.
Overview
The Kinde PHP SDK provides two main clients:
- KindeClientSDK - For OAuth user authentication (frontend applications)
- KindeManagementClient - For server-to-server management operations (backend services)
Installation
composer require kinde-oss/kinde-php-sdk
Quick Start
Environment Variables
Set up your environment variables:
# Required for both clients KINDE_DOMAIN=https://your-domain.kinde.com KINDE_CLIENT_ID=your_client_id KINDE_CLIENT_SECRET=your_client_secret # OAuth client specific KINDE_REDIRECT_URI=http://localhost:8000/auth/callback KINDE_LOGOUT_REDIRECT_URI=http://localhost:8000 KINDE_GRANT_TYPE=authorization_code # Management client specific (optional) KINDE_MANAGEMENT_ACCESS_TOKEN=your_access_token
OAuth Client (User Authentication)
use Kinde\KindeSDK\KindeClientSDK; // Create OAuth client from environment variables (recommended) $kindeClient = KindeClientSDK::createFromEnv(); // Or use constructor (same result) $kindeClient = new KindeClientSDK(); // Or override specific parameters $kindeClient = new KindeClientSDK( domain: 'https://custom-domain.kinde.com', // Override domain redirectUri: null, // Use from environment clientId: null, // Use from environment clientSecret: null, // Use from environment grantType: 'authorization_code' // Override grant type ); // Redirect user to login $kindeClient->login(); // Handle callback and get user info if ($kindeClient->isAuthenticated) { $user = $kindeClient->getUserDetails(); echo "Welcome, {$user['given_name']}!"; // Check user entitlements if ($kindeClient->hasEntitlement('premium_features')) { $limit = $kindeClient->getEntitlementLimit('premium_features'); echo "You have premium features with limit: " . $limit; } }
Management Client (Server-to-Server)
use Kinde\KindeSDK\KindeManagementClient; // Create management client from environment variables (recommended) $management = KindeManagementClient::createFromEnv(); // Or use constructor (same result) $management = new KindeManagementClient(); // Or override specific parameters $management = new KindeManagementClient( domain: 'https://custom-domain.kinde.com', // Override domain clientId: null, // Use from environment clientSecret: null, // Use from environment accessToken: 'custom_token' // Override access token ); // Create a user $user = $management->users->createUser([ 'given_name' => 'John', 'family_name' => 'Doe', 'email' => 'john@example.com' ]); // Get all users $users = $management->users->getUsers(); // Create an organization $org = $management->organizations->createOrganization([ 'name' => 'My Organization' ]);
Framework Integration
Laravel
composer require kinde-oss/kinde-auth-laravel php artisan kinde:install
// In your controller use Kinde\KindeSDK\KindeClientSDK; use Kinde\KindeSDK\KindeManagementClient; class AuthController extends Controller { public function __construct( private KindeClientSDK $kindeClient, private KindeManagementClient $management ) {} public function login() { return $this->kindeClient->login(); } public function createUser(Request $request) { $user = $this->management->users->createUser([ 'given_name' => $request->input('given_name'), 'family_name' => $request->input('family_name'), 'email' => $request->input('email') ]); return response()->json($user); } }
Available APIs
Management Client APIs
The KindeManagementClient
provides access to all management APIs:
- Users API -
$management->users
- Organizations API -
$management->organizations
- Applications API -
$management->applications
- Roles API -
$management->roles
- Permissions API -
$management->permissions
- Feature Flags API -
$management->featureFlags
- Environments API -
$management->environments
- OAuth API -
$management->oauth
- And many more...
OAuth Client Features
The KindeClientSDK
provides OAuth authentication features:
- User login/logout
- Authorization code flow
- PKCE flow
- User profile access
- Token management
- Portal redirects
- Entitlements - Access user billing entitlements and feature limits
Documentation
- Management Client Documentation
- Entitlements Documentation
- Framework Integration
- Framework Examples
- Portal Integration
- Inertia.js Integration
Examples
See the examples directory for complete working examples.
Migration Guide
If you're currently using the API classes directly, you can migrate to the management client:
Before
use Kinde\KindeSDK\Api\UsersApi; use Kinde\KindeSDK\Configuration; $config = new Configuration(); $config->setHost('https://your-domain.kinde.com'); $config->setAccessToken('your_token'); $usersApi = new UsersApi(null, $config); $users = $usersApi->getUsers();
After
use Kinde\KindeSDK\KindeManagementClient; $management = KindeManagementClient::createFromEnv(); $users = $management->users->getUsers();
Support
License
This project is licensed under the MIT License.