niif / shibboleth-user-provider-bundle
shibboleth bundle 通用 UserProvider 包
dev-master
2016-03-03 10:27 UTC
Requires
This package is auto-updated.
Last update: 2024-09-08 02:07:48 UTC
README
该包根据 SAML 权限属性在 $_SERVER 变量中为认证用户提供角色。
您可以定义用于 ROLE_ADMIN、ROLE_USER、ROLE_GUEST 和从权限值获得的 ROLE_whatever 的正则表达式。
然后您可以像 symfony 一样实现访问控制。
安装
将以下行添加到 composer.json
... "repositories": [ { "type": "vcs", "url": "git@dev.niif.hu:gyufi/shibbolethuserproviderbundle.git" } ], ...
安装包
composer require niif/shibboleth-user-provider-bundle
更新 app/AppKernel.php
$bundles = array( ... new KULeuven\ShibbolethBundle\ShibbolethBundle(), new Niif\ShibbolethUserProviderBundle\NiifShibbolethUserProviderBundle(), ... );
根据https://github.com/rmoreas/ShibbolethBundle 中的说明配置 shibboleth bundle。
配置用户提供者。
- entitlement_serverparameter,$_SERVER 数组的键,包含用户角色值。 必需
- entitlement_prefix,角色的前缀,例如 urn:geant:niif.hu:hexaa:40: 必需
- generate_custom_roles,使用权限值生成角色,例如从 urn:geant:niif.hu:hexaa:40:customer 权限值生成 ROLE_customer。默认是
FALSE
。 - custom_role_prefix,如果存在,自定义角色的前缀。例如 urn:geant:niif.hu:hexaa:40:org:sztaki 的前缀是 org:,角色将是:ROLE_sztaki。默认
""
。 - custom_additional_role,如果存在,则用户具有自定义角色时,将采用的角色,通常是 ROLE_USER。默认:
ROLE_USER
。 - admin_role_regexp,ROLE_ADMIN 的值。默认是
/^admin$/
- user_role_regexp,ROLE_USER 的值。默认是
/^user$/
- guest_role_regexp,ROLE_GUEST 的值。默认是
/^guest$/
更新您的 app/config/config.yml
... niif_shibboleth_user_provider: entitlement_serverparameter: %shibboleth_user_provider_entitlement_serverparameter% entitlement_prefix: %shibboleth_user_provider_entitlement_prefix% generate_custom_roles: %shibboleth_user_provider_generate_custom_roles% # custom_role_prefix: %shibboleth_user_provider_custom_role_prefix% # custom_additional_role: %shibboleth_user_provider_custom_additional_role% # admin_role_regexp: %shibboleth_user_provider_admin_role_regexp% # user_role_regexp: %shibboleth_user_provider_user_role_regexp% # guest_role_regexp: %shibboleth_user_provider_guest_role_regexp% ...
custom_additional_role: true
entitlement_prefix the value
|-------------------------| |------|
value from federation: urn:geant:niif.hu:hexaa:40:org:customer
|--|
custom_role_prefix
The result:
{ROLE_customer}
在 app/config/parameters.yml
parameters ... shibboleth_user_provider_entitlement_serverparameter: edupersonentitlement shibboleth_user_provider_entitlement_prefix: urn:oid: shibboleth_user_provider_generate_custom_roles: true ...
在 app/config/security.yml
... providers: ... shibboleth: id: shibboleth.user.provider ... ... firewalls: ... secured_area: pattern: ^/ shibboleth: true logout: path: /logout target: https://www.example.com/logged_out success_handler: security.logout.handler.shibboleth ...
在开发环境中模拟 shibboleth 认证
当您开发应用程序时,无论如何都应该模拟 shibboleth 认证。您可以在启用 headers 和 env 模块后,在 apache 配置中完成此操作。
Alias /my_app /home/me/my_app/web
<Directory /home/me/my_app/web>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
SetEnv Shib-Person-uid myuid
SetEnv Shib-EduPersonEntitlement urn:oid:whatever
RequestHeader append Shib-Identity-Provider "fakeIdPId"
RequestHeader append eppn "myeppn"
</Directory>