korotovsky/sso-sp-bundle

Symfony2的单点登录组件。服务提供商部分。

0.3.1 2016-03-04 14:06 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:00:47 UTC


README

Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight

免责声明

我绝不是安全专家。我对这个领域也不算差,但我也不能保证这个组件的安全性。如果您想在生产环境中使用它,请自行承担风险。话虽如此,如果您想为此组件做出贡献,让它变得更好/更安全,您可以始终 创建一个问题 或发送 一个拉取请求

描述

此组件提供了一种简单的方法将单点登录集成到您的网站中。它使用现有的(主)防火墙进行实际的身份验证,并将所有配置的SSO路由重定向到通过一次性密码进行身份验证。

安装

安装是一个快速的五步过程

  1. 使用composer下载SingleSignOnServiceProviderBundle
  2. 启用组件
  3. 配置SingleSignOnServiceProviderBundle
  4. 启用验证OTP的路由
  5. 修改安全设置

第1步:使用composer下载SingleSignOnServiceProviderBundle

告诉composer需要该包

composer require korotovsky/sso-sp-bundle

Composer将组件安装到您的项目目录的 vendor/korotovsky 中。

第2步:启用组件

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = [
        // ...
        new Krtv\Bundle\SingleSignOnServiceProviderBundle\KrtvSingleSignOnServiceProviderBundle(),
    ];
}
?>

第3步:配置SingleSignOnServiceProviderBundle

将以下设置添加到您的 config.yml 文件中。

# app/config/config.yml
krtv_single_sign_on_service_provider:
    host:                 idp.example.com
    host_scheme:          http

    login_path:           /sso/login/

    # Configuration for OTP managers
    otp_manager:
        name: http
        managers:
            http:
                provider: guzzle     # Active provider for HTTP OTP manager
                providers:           # Available HTTP providers
                    service:
                        # the service must implement Krtv\SingleSignOn\Manager\Http\Provider\ProviderInterface
                        id: krtv_single_sign_on_service_provider.security.authentication.otp_manager.http.provider.guzzle

                    guzzle:
                        # in case you don't have a guzzle client, you must create one
                        client:   acme_bundle.guzzle_service
                        # the route that was created in the IdP bundle
                        resource: http://idp.example.com/internal/v1/sso

    otp_parameter:        _otp
    secret_parameter:     secret

第4步:启用验证OTP的路由

# app/config/routing.yml
otp:
    # this needs to be the same as the check_path, specified later on in security.yml
    path: /otp/validate/

第5步:修改安全设置

# app/config/security.yml
security:
    firewalls:
        main:
            pattern: ^/
            sso:
                require_previous_session: false
                provider:                 main
                check_path:               /otp/validate/     # Same as in app/config/routing.yml

                sso_scheme:               http               # Required
                sso_host:                 idp.example.com    # Required

                sso_otp_scheme:           http               # Optional
                sso_otp_host:             consumer1.com      # Optional

                sso_failure_path:         /login             # Can also be as an absolute path to service provider
                sso_path:                 /sso/login/        # SSO endpoint on IdP.

                sso_service_extra:           null            # Default service extra parameters. Optional.
                sso_service_extra_parameter: service_extra   # Parameter name. Optional

                sso_login_required:           1              # Optional
                sso_login_required_parameter: login_required # Optional

                sso_service:                  consumer1      # Consumer name

            logout:
                invalidate_session: true
                path:               /logout
                target:             http://idp.example.com/sso/logout?service=consumer1

此组件的公共API

此组件将几个服务注册到服务容器中。这些服务将帮助您自定义应用程序中的SSO流程