linkorb/flex-auth

此库为symfony安全提供运行时flex认证

v1.5.1 2023-02-03 12:18 UTC

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/

链接

FlexAuthBundle - symfony包. 演示

FlexAuthProvider - silex提供者. 演示

安全组件(symfony文档)