italia/spid-symfony-bundle

一个基于 italia/spid-php-lib 的Bundle,使 Symfony3 能够使用 SPID 认证

安装: 925

依赖: 0

建议者: 0

安全: 0

星标: 9

关注者: 10

分支: 6

开放问题: 5

类型:bundle

v0.2.2-beta 2019-01-22 08:58 UTC

This package is auto-updated.

Last update: 2024-09-22 21:23:49 UTC


README

⚠️ 进行中 ⚠️

此Bundle允许轻松地将 italia/spid-php-lib 库集成到Symfony项目中。

提供了可轻松覆盖的路线和服务

此Bundle未实现的一个典型需求是保存通过SPID到达的用户数据。

安装

步骤1:安装和配置

使用composer安装存储库

composer require italia/spid-simfony-bundle

通过将其添加到 AppKernel 来启用Bundle

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Italia\SpidSymfonyBundle\SpidSymfonyBundle(),
        );

        // ...
    }

    // ...
}

配置 security.yml 以使用认证器和用户提供者

security:
  providers:
    spid_user_provider:
      id: id_del_servizio
  firewalls
    spid:
      pattern: /il/vostro/pattern/
      guard:
        provider: spid_user_provider
        authenticators:
          - spid.authenticator

提供的 guardAuthenticator 非常基础,需要根据项目需求进行扩展

如果需要使用默认路由,请包含路由

spid_security:
  resource: '@SpidSymfonyBundle/Resources/config/routing/saml_routes.yml'

请注意 acs 路由,它必须显然与公开的路由相匹配

添加Bundle配置

spid_symfony:
  sp_entityid: 'http://some.site.it'
  sp_key_file: '%kernel.root_dir%/../example/sp.key'
  sp_cert_file: '%kernel.root_dir%/../example/sp.crt'
  sp_singlelogoutservice: 
    - [ 'http://some.site.it/slo', '' ]
  sp_org_name: 'dev-system'
  sp_attributeconsumingservice:
    - ["name", "familyName", "fiscalNumber", "email"]
    - ["name", "familyName", "fiscalNumber", "email", "spidCode"]
  sp_assertionconsumerservice:
    - 'http://some.site.it/acs'
  sp_org_display_name: 'Sistema di Sviluppo'
  idp_metadata_folder: '%kernel.root_dir%/../example/idp_metadata'

步骤2:(可选)保存用户

如果需要,可以通过PISD保存检索到的用户。在Authenticator中这样做是最合理的地方,通过重写 getUser 方法并利用 $credentials 中的数据来实例化一个新的要持久化的用户

覆盖

可以将登录模板覆盖为将自定义模板放在 app/Resources/SpidSymfonyBundle/views/Security/chooseidp.html.twig 中。有关SPID标准按钮的文档,请参阅 https://github.com/italia/spid-smart-button。Bundle中提供了一个版本,方便开发测试,但应将提供的版本替换为生产时的有效版本。

此Bundle提供的按钮不保证有效或可用

IDP

要配置测试IDP,请参阅 https://github.com/italia/spid-testenv2