authbucket / oauth2-symfony-bundle
Symfony OAuth2Bundle
Requires
- php: >=5.5.9
- authbucket/oauth2-php: ~5.0.0-alpha4
- symfony/framework-bundle: ~3.2
- symfony/monolog-bundle: ~3.0
- symfony/security-bundle: ~3.2
Requires (Dev)
- ext-pdo_sqlite: *
- doctrine/doctrine-bundle: ~1.6
- doctrine/doctrine-fixtures-bundle: ~2.3
- doctrine/orm: ~2.5
- sensio/distribution-bundle: ~5.0
- sensio/framework-extra-bundle: ~3.0
- symfony/phpunit-bridge: ~3.2
- symfony/swiftmailer-bundle: ~2.3
- symfony/symfony: ~3.2
- twig/extensions: ~1.0
- dev-develop / 5.x-dev
- dev-master / 5.0.x-dev
- 5.0.0-alpha4
- 5.0.0-alpha1
- 4.x-dev
- 4.2.0
- 4.1.6
- 4.1.5
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.x-dev
- 3.2.0
- 3.1.6
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.12
- 3.0.11
- 3.0.10
- 3.0.9
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.4.10
- 2.4.9
- 2.4.8
- 2.4.7
- 2.4.6
- 2.4.5
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.10
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.0
- 1.0.1
- 1.0.0
- 1.0.0-rc4
- 1.0.0-rc2
- 1.0.0-rc1
- 1.0.0-alpha3
- 1.0.0-alpha2
- 1.0.0-alpha1
This package is auto-updated.
Last update: 2024-09-19 17:31:19 UTC
README
AuthBucket\Bundle\OAuth2Bundle 是一个 Symfony Bundle,它将 AuthBucket\OAuth2 集成到您的 Symfony 项目中,尽可能简单。
安装
如果您使用 Composer 管理项目的依赖项,请将 authbucket/oauth2-symfony-bundle
添加到项目的 composer.json
文件中。
以下是一个简单的 composer.json
示例
{
"require": {
"authbucket/oauth2-symfony-bundle": "~5.0"
}
}
参数
此包包含以下参数
model
: (可选) 使用资源防火墙和远程调试端点时,用您自己的模型类覆盖此参数,默认为内存中的 AccessToken。driver
: (可选) 目前我们支持内存(in_memory
)或 Doctrine ORM(orm
)。默认为内存,用于使用资源防火墙和远程调试端点。user_provider
: (可选) 对于使用grant_type = password
,用您自己的用户提供者覆盖此参数,例如使用 InMemoryUserProvider 或实现 UserProviderInterface 的 Doctrine ORM EntityRepository。
服务
此包包含以下服务控制器,这些控制器简化了 OAuth2.0 控制器实现的冗余
authbucket_oauth2.authorization_controller
: 授权端点控制器。authbucket_oauth2.token_controller
: 令牌端点控制器。authbucket_oauth2.debug_controller
: 调试端点控制器。
注册
您必须将 AuthBucketOAuth2Bundle
添加到您的 AppKernel.php
文件中。
# app/AppKernel.php
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
new AuthBucket\Bundle\OAuth2Bundle\AuthBucketOAuth2Bundle(),
];
return $bundles;
}
}
此外,如果尚未这样做,请启用以下包
$bundles = [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
];
使用方法
此库将前端防火墙和后端控制器视角中的端点逻辑分开,因此您需要同时设置两者才能使其正常工作。
要启用内置控制器及其相应的路由,请将以下内容添加到您的 routing.yml
文件中,所有上述控制器将根据路由前缀 /api/oauth2
启用
# app/config/routing.yml
authbucketoauth2bundle:
prefix: /api/oauth2
resource: "@AuthBucketOAuth2Bundle/Resources/config/routing.yml"
以下是一些常见用例的配方列表。
授权端点
我们不为此端点提供自定义防火墙,您应自己保护它,例如通过 SecurityBundle 进行认证和捕获用户凭据。
# app/config/security.yml
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
default:
memory:
users:
demousername1: { roles: 'ROLE_USER', password: demopassword1 }
demousername2: { roles: 'ROLE_USER', password: demopassword2 }
demousername3: { roles: 'ROLE_USER', password: demopassword3 }
firewalls:
api_oauth2_authorize:
pattern: ^/api/oauth2/authorize$
http_basic: ~
provider: default
令牌端点
类似于授权端点,我们需要使用我们的自定义防火墙 oauth2_token
保护此端点。
# app/config/security.yml
security:
firewalls:
api_oauth2_token:
pattern: ^/api/oauth2/token$
oauth2_token: ~
调试端点
我们应该使用我们的自定义防火墙 oauth2_resource
保护此端点。
# app/config/security.yml
security:
firewalls:
api_oauth2_debug:
pattern: ^/api/oauth2/debug$
oauth2_resource: ~
资源端点
除了上述调试端点之外,我们不提供其他资源端点控制器实现。您应考虑实现自己的端点,例如获取用户电子邮件地址或个人资料图片。
另一方面,您可以使用我们的自定义防火墙 oauth2_resource
保护您的资源服务器端点。简短版本(默认假设资源服务器与授权服务器捆绑在一起,查询本地模型管理器,没有范围保护)
# app/config/security.yml
security:
firewalls:
api_resource:
pattern: ^/api/resource
oauth2_resource: ~
长版本(假设资源服务器与授权服务器捆绑在一起,查询本地模型管理器,保护范围为 demoscope1
)
# app/config/security.yml
security:
firewalls:
api_resource:
pattern: ^/api/resource
oauth2_resource:
resource_type: model
scope: [ demoscope1 ]
如果授权服务器托管在其他地方,您可以通过查询远程授权服务器调试端点来保护您的本地资源端点。
# app/config/security.yml
security:
firewalls:
api_resource:
pattern: ^/api/resource
oauth2_resource:
resource_type: debug_endpoint
scope: [ demoscope1 ]
options:
debug_endpoint: http://example.com/api/oauth2/debug
cache: true
示例
该演示基于 Symfony 和 AuthBucketOAuth2Bundle。阅读演示以获取更多信息。
您也可以在本地运行演示。打开控制台并执行以下命令,在oauth2-symfony-bundle
目录中安装最新版本:
$ composer create-project authbucket/oauth2-symfony-bundle authbucket/oauth2-symfony-bundle "~5.0"
然后使用PHP内置的Web服务器运行演示应用程序。
$ cd authbucket/oauth2-symfony-bundle
$ ./bin/console server:run
如果您收到错误在"server"命名空间中未定义任何命令。
,那么您可能正在使用PHP 5.3。没关系!但是内置的Web服务器仅适用于PHP 5.4.0或更高版本。如果您有较旧的PHP版本或您更喜欢传统的Web服务器(如Apache或Nginx),请阅读配置Web服务器文章。
打开您的浏览器并访问http://127.0.0.1:8000 URL以查看演示应用程序的欢迎页面。
还可以访问http://127.0.0.1:8000/admin/refresh_database以使用用户账户admin
:secrete
初始化捆绑的SQLite数据库。
文档
OAuth2Bundle的文档是用Sami构建的,并公开托管在GitHub Pages上。
要本地构建文档,请执行以下命令:
$ sami.php update .sami.php
使用浏览器打开build/sami/index.html
以查看文档。
测试
该项目使用PHPUnit测试用例进行测试;CI结果可以在Travis CI中找到;代码覆盖率报告可以在Coveralls中找到。
要本地运行测试套件,请执行以下命令:
$ phpunit -c phpunit.xml.dist
使用浏览器打开build/logs/html
以查看覆盖率报告。