hagmann / zf-oauth2-doctrine
Doctrine OAuth2 服务器适配器用于 Apigility
Requires
- php: >=5.5
- doctrine/doctrine-module: ^0.9
- doctrine/doctrine-orm-module: *
- zendframework/zend-config: ^2.5
- zendframework/zend-i18n: ^2.5
- zendframework/zend-modulemanager: ^2.5
- zfcampus/zf-mvc-auth: ^1.3
- zfcampus/zf-oauth2: ^1.3
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~4
- satooshi/php-coveralls: 0.6.*
- squizlabs/php_codesniffer: ~2
- zendframework/zend-authentication: ^2.5
- zendframework/zend-form: ^2.5
- zendframework/zend-loader: ^2.5
- zendframework/zend-log: ^2.5
- zendframework/zend-serializer: ^2.5
- zendframework/zend-test: ^2.5
Suggests
- bushbaby/zf-oauth2-doctrine-mutatetablenames: Allows configuration of the table names that this module uses
This package is not auto-updated.
Last update: 2024-09-20 19:14:39 UTC
README
关于
此项目提供了Doctrine适配器,用于zfcampus/zf-mvc-auth,以及OAuth2的所有方面的实体定义,包括授权代码、访问令牌、刷新令牌、JWT & JTI 和作用域。
使用Skipper创建的实体关系图
安装
此模块的安装使用composer。有关composer文档,请参阅getcomposer.org。
$ php composer.phar require api-skeletons/zf-oauth2-doctrine "^1.0"
将此模块添加到应用程序配置中
'modules' => [ ... 'ZF\OAuth2\Doctrine', ],
用户实体
此存储库提供了实现OAuth2所需的每个实体,除了用户实体。这样做的原因是用户实体可以与OAuth2 Doctrine存储库解耦,以便在运行时动态链接。这带来了许多好处,例如,可以在不修改OAuth2-orm.module.xml
模块的情况下创建ERD。
用户实体必须实现ZF\OAuth2\Doctrine\Entity\UserInterface
此模块单元测试的用户实体是一个良好的起点:https://github.com/api-skeletons/zf-oauth2-doctrine/blob/master/test/asset/module/Doctrine/src/Entity/User.php
模块配置
将config/oauth2.doctrine-orm.global.php.dist
复制到您的autoload目录,并将其重命名为oauth2.doctrine-orm.global.php
。此配置具有多个部分,用于多个适配器。开箱即用,此模块提供了一个default
适配器。您需要编辑此文件,至少包含您的用户实体,该实体未提供。
与zfcampus/zf-mvc-auth的配置
默认情况下,此模块包括一个oauth2.doctrineadapter.default
适配器。适配器用于从服务创建存储
'zf-mvc-auth' => array( 'authentication' => array( 'adapters' => array( 'oauth2_doctrine' => array( 'adapter' => 'ZF\\MvcAuth\\Authentication\\OAuth2Adapter', 'storage' => array( 'storage' => 'oauth2.doctrineadapter.default', 'route' => '/oauth', ), ), ), ), ),
与zfcampus/zf-oauth2的配置
将默认存储适配器添加到zf-oauth默认存储
'zf-oauth2' => array( 'storage' => 'oauth2.doctrineadapter.default',
在同一个应用程序中使用两个或更多API时,可以使用此库与第二组实体进行第二个OAuth2服务。
使用默认实体
创建数据库的详细信息(包括所提供的实体)超出了本项目的范围。通常,这是通过doctrine/doctrine-orm-module使用php public/index.php orm:schema-tool:create
完成的。
默认情况下,此模块使用提供的实体,但您可以使用适配器与自己的实体(并在映射配置部分中映射它们)使用此标志。
'zf-oauth2-doctrine' => [ 'default' => [ 'enable_default_entities' => true,
自定义多对一映射
如果您需要自定义调用mapManyToOne,它从默认实体到用户实体创建动态连接,您可以在['dynamic_mapping']['default_entity']['additional_mapping_data']
元素中添加任何参数。每个实体都添加了一个具有不遵守元数据命名策略的用户_id主键的用户实体的示例。
'refresh_token_entity' => [ 'entity' => 'ZF\OAuth2\Doctrine\Entity\RefreshToken', 'field' => 'refreshToken', 'additional_mapping_data' => [ 'joinColumns' => [ [ 'name' => 'user_id', 'referencedColumnName' => 'user_id', ], ], ], ],
用户实体上的标识字段
默认情况下,此Doctrine适配器通过配置的用户实体上的username
字段检索用户。如果您需要使用不同的字段或多个字段,您可以通过'auth_identity_fields'键这样做。例如,ZfcUser允许用户通过用户名和/或电子邮件字段进行身份验证。
匹配ZfcUser auth_identity_fields
配置的示例
'zf-oauth2-doctrine' => [ 'default' => [ 'auth_identity_fields' => ['username', 'email'],
验证zf-apigility-doctrine资源
为了使用查询创建筛选器和查询提供者验证OAuth2会话,请实现ZF\OAuth2\Doctrine\OAuth2ServerInterface
并使用ZF\OAuth2\Doctrine\OAuth2ServerTrait
。然后在筛选器函数中调用$result = $this->validateOAuth2($scope);
。
扩展
其他模块,它们扩展了此存储库提供的功能。
-
api-skeletons/zf-oauth2-doctrine-console - 默认 zf-oauth2-doctrine 安装的控制台管理。
-
basz/zf-oauth2-doctrine-mutabletablenames - 如果您不想使用默认实体提供的默认表名,此模块允许您自定义它们。