gauss-allianz/shibboleth-guard-bundle

使用 guard 组件在 symfony 中实现 Shibboleth SP 认证的扩展包。

dev-master 2016-10-18 11:57 UTC

This package is auto-updated.

Last update: 2024-09-09 17:00:10 UTC


README

简介

Shibboleth 是一个为网络服务设计的单点登录系统。本扩展包提供了一个 Guard 认证器,以在 Symfony 2.8 中使用此认证方法。对于 Symfony 2.8 之前的版本,你应该查看 https://github.com/roenschg/ShibbolethBundle

安装

可以使用 composer 安装此库。

composer require "gauss-allianz/shibboleth-guard-bundle" "dev-master"

如何在本地测试

设置本地 IdP/SP 基础设施是一个非常耗时的工作。我将描述一种简单的方法,在本地系统上测试您的功能,而无需任何软件。但您可以考虑使用以下库: https://packagist.org.cn/packages/mrclay/shibalike

首先,您需要了解 Apache2 服务器以何种方式向 PHP 发送哪些信息。这可能会根据不同的配置而有所不同。您可以通过在您的 web 服务器上放置一个脚本来测试您获得的信息。 (脚本必须位于 shibboleth 受保护区域!)

<?php
    print_r(\$\_SERVER);

您可以调用脚本,可能需要配置属性命名。(见“配置”部分)。如果变量使用前缀“HTTP_”,则跳过前缀并在配置中使用“use_header”选项。

之后,您可以通过将上述 PHP 脚本的输出复制到 app/app_dev.php 中来模拟环境,如下例所示。

    $_SERVER['HTTP_mail'] = "name@domain.tld";
    $_SERVER['HTTP_Shib-Application-Id'] = 'TEST';
    $_SERVER['HTTP_sn'] = "Lastname";
    $_SERVER['HTTP_givenName'] = "Firstname";

配置

在您的 config.yml 中,您必须至少设置以下参数

shibboleth_guard:
    handler_path: /Shibboleth.sso
    session_initiator_path: /Login
    username_attribute: %shibboleth_username_attribute%
    use_headers: true
    logout_target: /
    attribute_definitions:
        mail: { header: mail, server: mail }
        persistent_id: { header: persistent_id, server: persistent_id }

handler_path 是到 Shibboleth 处理器 URL 的相对路径,session_initator_path 用于设置登录位置,username_attribute 定义将用于识别用户(对于用户提供者)的元属性,use_headers 选项指定 shibboleth 守护进程为 PHP 脚本设置属性的类型,logout_target 是注销位置。通过 attribute_definitions,您可以在 Shibboleth 配置中的属性名称与默认值不同时覆盖多个选项。