1-0-0-1 / laravel-keycloak-extended-guard
基于远程验证的 Laravel Keycloak 守护程序
Requires
- php: >=7.4
- firebase/php-jwt: ^6.0
- laravel/framework: ^8
This package is auto-updated.
Last update: 2024-09-29 06:03:16 UTC
README
此包帮助您基于 Keycloak 服务器生成的 JWT 令牌并使用远程检查在 Laravel API 上进行用户身份验证。
安装
需要此包
composer require 1-0-0-1/laravel-keycloak-extended-guard
配置
Laravel 身份验证
修改 config/auth.php
'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'keycloak' => [ # <-- Add this block 'driver' => 'keycloak', 'provider' => 'users', ],
Laravel 路由
只需在 routes/api.php
中保护一些端点,您就完成了!
// public endpoints Route::get('/hello', function () { return ':)'; }); // protected endpoints Route::middleware('auth:keycloak')->post('/secret_page', function () { return 'Welcome to secret place'; });
Keycloak 守护程序
Keycloak 扩展守护程序配置可以通过 Laravel 的 .env
文件来处理。请确保所有字符串都已被截断。
可选地,您可以发布配置文件。
php artisan vendor:publish --provider="KeycloakExtendedGuard\KeycloakExtendedGuardServiceProvider"
<?php return [ // Keycloak secret (Configure->Realm Settings->Keys->RS256->Public key) 'client_secret' => env('KEYCLOAK_CLIENT_SECRET', ''), // Confirm token with request to keycloak server 'required_server_confirm' => env('KEYCLOAK_REQUIRED_SERVER_CONFIRM', false), // Keycloak server URL 'base_url' => env('KEYCLOAK_BASE_URL', ''), // Keycloak realm 'realm' => env('KEYCLOAK_REALM', ''), // Load user from user provider if token valid 'load_user' => env('KEYCLOAK_LOAD_USER', false), 'user_provider_credential' => env('KEYCLOAK_USER_PROVIDER_CREDENTIAL', 'username'), 'token_principal_attribute' => env('KEYCLOAK_TOKEN_PRINCIPAL_ATTRIBUTE', 'preferred_username'), ];
client_secret
必需。
Keycloak 服务器领域公钥(字符串)。
如何获取领域公钥?点击“领域设置” > “密钥” > “算法 RS256” 行 > “公钥” 按钮
load_user
必需。默认为 false
。
如果您没有 users
表,则必须禁用此功能。它从数据库中获取用户并将值填充到认证用户对象中。如果启用,它将与 user_provider_credential
和 token_principal_attribute
一起工作。
user_provider_credential
必需。默认为 username
。
包含用户唯一标识符的字段(例如,用户名、电子邮件、昵称)来自“用户”表。在认证过程中,它将与 token_principal_attribute
属性进行对比。
token_principal_attribute
必需。默认为 preferred_username
。
包含用户标识符的 JWT 令牌属性。在认证过程中,它将与 user_provider_credential
属性进行对比。
required_server_confirm
必需。默认为 false
。
允许在 Keycloak 服务器上进行令牌验证
base_url
可选
Keycloak 服务器 URL
realm
可选
Keycloak 领域名称