misd/raven-bundle

为您的 Symfony2 应用程序添加 Raven 认证

v1.1.0 2013-03-08 16:07 UTC

This package is auto-updated.

Last update: 2024-09-11 00:45:47 UTC


README

Build Status

此捆绑包包含一个 Symfony2 认证提供者,允许用户通过剑桥大学的中央认证服务 Raven 登录到 Symfony2 应用程序。

它还包含一个用户提供者,允许任何通过 Raven 认证的用户访问您的应用程序。

作者

该捆绑包使用了基于 UcamWebauth PHP 类 的代码。

需求

安装

  1. 将捆绑包添加到您的依赖项中

    // composer.json
    
    {
       // ...
       "require": {
           // ...
           "misd/raven-bundle": "~1.0"
       }
    }
    
  2. 使用 Composer 下载和安装捆绑包

    $ php composer.phar update misd/raven-bundle
    
  3. 在您的应用程序中注册捆绑包

    // app/AppKernel.php
    
    class AppKernel extends Kernel
    {
        // ...
        public function registerBundles()
        {
            $bundles = array(
                // ...
                new Misd\RavenBundle\MisdRavenBundle(),
                // ...
            );
        }
        // ...
    }
    

配置

防火墙

要启用 Raven 认证,将 raven: true 添加到防火墙配置中

// app/config/security.yml

security:
    firewalls:
        raven_secured:
            pattern: ^/secure/.*
            raven: true

用户配置

只要用户名是用户的 CRSid,就可以使用正常的 Symfony2 用户提供者。

如果您希望任何成功通过 Raven 认证的用户都能访问您的应用程序,可以使用捆绑包的 Raven 用户提供者。

// app/config/security.yml

security:
    providers:
        raven:
            id: raven.user_provider

用户提供者返回一个具有 ROLE_USER 角色的 Misd\RavenBundle\Security\User\RavenUser 实例。

这可以与其他提供者一起使用,以授予某些用户额外的角色。例如

// app/config/security.yml

security:
    providers:
        chain_provider:
            chain:
                providers: [in_memory, raven]
        in_memory:
            memory:
                users:
                    abc123: { roles: [ 'ROLE_ADMIN' ] }
        raven:
            id: raven.user_provider

资源描述

您可以将您的应用程序名称添加到 Raven 登录页面

// app/config/config.yml

misd_raven:
    description: "My application"

页面上的文本现在将包含类似于 "此资源称自己为 'My application',并且是 ... " 的内容。

测试 Raven 服务

在开发期间,特别是在不在大学网络上时,有时需要使用 测试 Raven 服务。您可以使用此服务代替实时服务。

// app/config/config_dev.yml

misd_raven:
    use_test_service: true

绝对不能 在生产中使用测试 Raven 服务:它可能会损害您的应用程序。保留在 config_dev.yml 中!

异常

该捆绑包可以抛出各种异常。要捕获它们,设置 事件监听器 并实现您的逻辑(显示消息、重定向到另一个页面等)。

Misd\RavenBundle\Exception\AuthenticationCancelledException

如果用户在 Raven 登录屏幕上点击 '取消',则会抛出此异常。

Symfony\Component\Security\Core\Exception\UsernameNotFoundException

如果用户未被配置,则会抛出此异常。如果您使用的是 Raven 用户提供者,则永远不会看到此异常。

Misd\RavenBundle\Exception\RavenException

如果捆绑包或 Raven 本身出现问题,则会抛出此异常。由于这是一个异常状态,您可能不需要捕获它(并让 500 内部服务器错误 返回)。它有以下子类型

  • Misd\RavenBundle\Exception\LoginTimedOutException:如果 Raven 响应超过 30 秒。

Misd\RavenBundle\Exception\OpenSslException

如果在 OpenSSL 中出现问题,则会抛出此异常。

事件

要监听捆绑包发出的事件,创建一个正常的事件订阅者服务

<service id="%my_listener.id%" class="%my_listener.class%">
    <tag name="kernel.event_listener" event="%raven_event%" method="%my_listener.method%"/>
</service>

该捆绑包发出以下事件

raven.redirect

Misd\RavenBundle\Event\RedirectEvent 对象包含了当用户被重定向到登录页面时给 Raven 传递的参数。例如,您可以添加 msg 参数。

raven.login

Symfony\Component\Security\Http\Event\InteractiveLoginEvent 对象包含了成功进行 Raven 登录后的请求和认证令牌。