knplabs/knp-oauth-bundle

此包已被废弃且不再维护。未建议替代包。

Symfony2的OAuth防火墙

安装: 135

依赖者: 1

建议者: 0

安全: 0

星标: 49

关注者: 32

分支: 9

类型:symfony-bundle

dev-master 2013-01-13 15:13 UTC

This package is auto-updated.

Last update: 2022-09-23 13:39:50 UTC


README

使用HWIOAuthBundle代替

KnpOAuthBundle,一个针对Symfony2的OAuth防火墙

2.1分支的说明

请注意,这是此包的2.1兼容分支。如果您正在使用Symfony 2.0.*,则应该升级。如果不能升级,您仍然可以使用2.0分支

介绍

此包为Symfony2提供了一个OAuth防火墙。

您应该真的阅读完整文档,但如果您很着急(我知道您很着急),这个文件应该能帮助您快速搭建工作环境。

要求

安装

将以下内容添加到您的deps

[Buzz]
    git=https://github.com/kriswallsmith/Buzz.git
    version=v0.5

[BuzzBundle]
    git=https://github.com/sensio/SensioBuzzBundle.git
    target=/bundles/Sensio/Bundle/BuzzBundle

[KnpOAuthBundle]
    git=https://github.com/KnpLabs/KnpOAuthBundle.git
    target=/bundles/Knp/Bundle/OAuthBundle

然后运行常规的bin/vendors

bin/vendors install

注册自动加载

$loader->registerNamespaces(array(
    'Knp'              => __DIR__.'/../vendor/bundles',
    'Buzz'             => __DIR__.'/../vendor/Buzz/lib'
));

在您的AppKernel中注册包

$bundles = array(
    new Knp\Bundle\OAuthBundle\KnpOAuthBundle(),
    new Sensio\Bundle\BuzzBundle\SensioBuzzBundle(),
);

配置

使用KnpOAuthBundle只需在您的security.yml中配置一个oauth防火墙。该包公开了一些配置指令以适应您的OAuth需求。以下是一个相当标准的配置示例

security:
    firewalls:
        login:
            pattern:    ^/secured/login$
            security:   false
        secured_area:
            pattern:    ^/secured/
            oauth:
                oauth_provider:    oauth
                authorization_url: https://github.com/login/oauth/authorize
                access_token_url:  https://github.com/login/oauth/access_token
                infos_url:         https://github.com/api/v2/json/user/show
                username_path:     user.login
                client_id:         <your_oauth_client_id>
                secret:            <your_oauth_secret>
                scope:             <your_oauth_scope>
                check_path:        /secured/login_check
                login_path:        /secured/login

请参阅配置参考以了解配置选项的描述。

现在,您可能想知道,此包附带了一些预先配置好的OAuth提供者,例如

  • github(必需选项:client_idsecret
  • 嗯...这就是现在的全部内容。

如果您在列表中没有看到您喜欢的提供者,请不要担心,有三种解决方案,具体取决于您的紧急程度

  1. 实现它(并在之后贡献它将非常棒)
  2. 使用通用的OAuth提供者
  3. 让我们实现它。(请尽可能提供信息(authorize_urlaccess_token_urlinfos_url(及其响应格式)和username_path将很棒))

用户提供者

大多数情况下,如果您在使用 Doctrine,您将希望使用 EntityUserProvider

此提供者从数据库中检索用户,并在它们不存在的情况下动态创建它们。它需要 Doctrine 才能工作。它的工作方式与 Doctrine 的实体用户提供者完全一样,只是其配置键为 oauth_entity

providers:
    secured_area:
        oauth_entity:
            class: KnpBundlesBundle:User
            property: name