1-0-0-1/laravel-keycloak-extended-guard

基于远程验证的 Laravel Keycloak 守护程序

1.3.0 2022-02-02 10:23 UTC

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_credentialtoken_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 领域名称