linkorb / flex-auth
此库为symfony安全提供运行时flex认证
v1.5.1
2023-02-03 12:18 UTC
Requires
- php: >=7.0
- symfony/security: ^4.0
Requires (Dev)
- phpunit/phpunit: ^8
Suggests
- firebase/php-jwt: Required for support flex-auth jwt type format. Prefer ^5.0
- symfony/doctrine-bridge: Required for support flex-auth entity type format. Prefer ^4.0
- symfony/http-foundation: Required for support flex-auth jwt type format. Prefer ^4.0
- userbase/client: Required for support userbase type format
This package is auto-updated.
Last update: 2024-08-30 01:20:15 UTC
README
FlexAuth:symfony安全的独立库
允许使用环境变量在运行时切换 UserProvider
支持基于环境变量的多个后端动态用户提供者。
要覆盖提供者配置,请为运行时 FlexAuth\FlexAuthTypeProviderInterface
提供数组配置
使用 FlexAuth\FlexAuthTypeProviderFactory::fromEnv('FLEX_AUTH')
并以格式 type?param1=value1¶m2=value2¶m3=value3
定义环境变量
示例定义环境变量
## Use memory provider
FLEX_AUTH=memory?users=alice:4l1c3:ROLE_ADMIN;ROLE_EXAMPLE,bob:b0b:ROLE_EXAMPLE)
## Or use userbase provider
FLEX_AUTH=userbase?dsn=https://username:password@userbase.example.com
## Or use the entity provider
FLEX_AUTH=entity?class=\App\Entities\User&property=username
## Or use a JWT provider
FLEX_AUTH=jwt?algo=RS256&publickey=@\cert\public_key.key&private_key=@\cert\privite_key.key&userField=username&groupField=permissions
支持长格式定义,如下所示
FLEX_AUTH=entity
FLEX_AUTH_ENTITY_CLASS=\App\Entities\User
FLEX_AUTH_ENTITY_PROPERTY=username
动态flex类型提供者示例。
class MyFlexAuthTypeProvider implements FlexAuthTypeProviderInterface { protected $className = \App\Entities\User::class; // can be change in runtime protected $propery = 'id'; //... public function provide(): array { // will be call every time return [ 'type' => 'entity', 'class' => $this->className, 'propery' => $this->propery, // dynamic user identificator ]; } public function switchToEmail() { $this->propery = 'email'; } }
完整示例请查看 /test/AuthenticationTest::testAuthenticate
运行测试
./vendor/bin/phpunit --bootstrap vendor/autoload.php tests/