gauss-allianz/shibboleth-guard-bundle
使用 guard 组件在 symfony 中实现 Shibboleth SP 认证的扩展包。
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 配置中的属性名称与默认值不同时覆盖多个选项。