visyon360/authsaml2-module

此包的最新版本(dev-main)没有可用的许可证信息。

安装: 0

依赖关系: 0

建议者: 0

安全: 0

星星: 0

观察者: 2

分支: 0

开放性问题: 0

类型:laravel-module

dev-main 2021-11-26 13:18 UTC

This package is not auto-updated.

Last update: 2024-09-29 01:40:58 UTC


README

目录
  1. 描述
  2. 入门
  3. 使用
  4. 联系方式

关于项目

Visyon360 Starter的composer Auth-saml2包。

入门

先决条件

安装此包需要Composer 2.0

安装 & SAML配置

aacotroneo/laravel-saml2

  1. SAML实现配置是通过以下库完成的(更多信息可以在文档库网站上查找): aacotroneo/laravel-saml2 我们将通过Composer安装此库

    composer require visyon360/authsaml2-module
  2. 然后你必须使用以下命令发布配置文件

    php artisan vendor:publish --provider="Aacotroneo\Saml2\Saml2ServiceProvider"
  3. 你需要配置你的服务提供商和你的身份提供者。我们将扮演服务提供商角色,该功能的大部分默认完成,但如果你需要,你可以根据你的需求修改这些信息(如果我们更改ACS和SLS URL,我们必须通知IP更改)。为了配置SP和IP的属性,你必须更改config/saml2_settings。在模块中添加控制器的名称

    'saml2_controller' => 'Modules\AuthSaml2\Http\Controllers\AuthController',
  4. 然后添加项目所需的其他idp,例如

    'idpNames' => ['develop','staging','metaverso'],
  5. 然后我们需要在config/saml2文件夹中创建所有idp的配置文件,例如develop_idp_settings.php,在这个文件中,我们必须更改所有要适应的设置属性。例如,在'sp'数组中,您将拥有服务提供商的属性

     'sp' => array(
            'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
            'x509cert' => env('SAML2_'.$this_idp_env_id.'_SP_x509',''),
            'privateKey' => env('SAML2_'.$this_idp_env_id.'_SP_PRIVATEKEY',''),
            'entityId' => env('SAML2_'.$this_idp_env_id.'_SP_ENTITYID',''),
            'assertionConsumerService' => array(
                'url' => '',
            ),
            'singleLogoutService' => array(
                'url' => '',
            ),
  6. 'NameIDFormat'是请求主体的标识符的格式。您必须与身份提供者相同。默认情况下,服务提供商不需要证书。'entityID'是标识服务提供商身份的URI(默认为空)。'ACS'和'SLS'分别是IP登录和登出的回调响应URL(默认为空)。在'idp'数组中,您将拥有身份提供者的属性

        'idp' => array(
            'entityId' => env('SAML2_'.$this_idp_env_id.'_IDP_ENTITYID', $idp_host . '/saml2/idp/metadata.php'),
            'singleSignOnService' => array(
                'url' => env('SAML2_'.$this_idp_env_id.'_IDP_SSO_URL', $idp_host . '/saml2/idp/SSOService.php'),
            ),
            'singleLogoutService' => array(
                'url' => env('SAML2_'.$this_idp_env_id.'_IDP_SL_URL', $idp_host . '/saml2/idp/SingleLogoutService.php'),
            ),
            'x509cert' => env('SAML2_'.$this_idp_env_id.'_IDP_x509', 'MIID/TCCAuWgAwIBAgIJAI4R3WyjjmB1MA0GCSqGSIb3DQEBCwUAMIGUMQswCQYDVQQGEwJBUjEVMBMGA1UECAwMQnVlbm9zIEFpcmVzMRUwEwYDVQQHDAxCdWVub3MgQWlyZXMxDDAKBgNVBAoMA1NJVTERMA8GA1UECwwIU2lzdGVtYXMxFDASBgNVBAMMC09yZy5TaXUuQ29tMSAwHgYJKoZIhvcNAQkBFhFhZG1pbmlAc2l1LmVkdS5hcjAeFw0xNDEyMDExNDM2MjVaFw0yNDExMzAxNDM2MjVaMIGUMQswCQYDVQQGEwJBUjEVMBMGA1UECAwMQnVlbm9zIEFpcmVzMRUwEwYDVQQHDAxCdWVub3MgQWlyZXMxDDAKBgNVBAoMA1NJVTERMA8GA1UECwwIU2lzdGVtYXMxFDASBgNVBAMMC09yZy5TaXUuQ29tMSAwHgYJKoZIhvcNAQkBFhFhZG1pbmlAc2l1LmVkdS5hcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbzW/EpEv+qqZzfT1Buwjg9nnNNVrxkCfuR9fQiQw2tSouS5X37W5h7RmchRt54wsm046PDKtbSz1NpZT2GkmHN37yALW2lY7MyVUC7itv9vDAUsFr0EfKIdCKgxCKjrzkZ5ImbNvjxf7eA77PPGJnQ/UwXY7W+cvLkirp0K5uWpDk+nac5W0JXOCFR1BpPUJRbz2jFIEHyChRt7nsJZH6ejzNqK9lABEC76htNy1Ll/D3tUoPaqo8VlKW3N3MZE0DB9O7g65DmZIIlFqkaMH3ALd8adodJtOvqfDU/A6SxuwMfwDYPjoucykGDu1etRZ7dF2gd+W+1Pn7yizPT1q8CAwEAAaNQME4wHQYDVR0OBBYEFPsn8tUHN8XXf23ig5Qro3beP8BuMB8GA1UdIwQYMBaAFPsn8tUHN8XXf23ig5Qro3beP8BuMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAGu60odWFiK+DkQekozGnlpNBQz5lQ/bwmOWdktnQj6HYXu43e7sh9oZWArLYHEOyMUekKQAxOK51vbTHzzw66BZU91/nqvaOBfkJyZKGfluHbD0/hfOl/D5kONqI9kyTu4wkLQcYGyuIi75CJs15uA03FSuULQdY/Liv+czS/XYDyvtSLnu43VuAQWN321PQNhuGueIaLJANb2C5qq5ilTBUw6PxY9Z+vtMjAjTJGKEkE/tQs7CvzLPKXX3KTD9lIILmX5yUC3dLgjVKi1KGDqNApYGOMtjr5eoxPQrqDBmyx3flcy0dQTdLXud3UjWVW3N0PYgJtw5yBsS74QTGD4='),
        ),
  7. 'entityID'是标识身份提供者身份的URI。'SSOS'和'SLS'分别是身份提供者的登录和登出端点URL。在这种情况下,需要证书来从IP进行身份验证。需要添加的环境变量如下

    FRONTEND_URL=
    SAML2_DEVELOP_IDP_HOST=
    SAML2_DEVELOP_IDP_x509=

    当我们处于不同的环境时,我们必须更改idp的名称,例如,如果我们使用此软件包进行测试,变量的名称必须是SAML2_STAGING_IDP_HOST和SAML2_STAGING_IDP_x509。

使用

在config/saml2_settings.php中,您可以更改SAML2实现的路由和控制器流程。如果您留空,则将使用默认URL。在这种情况下,我们使用UserController作为SAML2Controller。

有四个我们必须记住的方法和路由,登录(登录和acs)和登出(登出和sls)。当您想要登录时,您将被重定向到登录方法

public function login(Saml2Auth $saml2Auth)
{
    $saml2Auth->login(config('saml2_settings.loginRoute'));
}

登录完成后,用户将被重定向到acs方法。在这个方法中,我们有认证状态,如果登录正确,则还有用户数据。如果我们需要更改idp返回的用户对象的某些属性,这些属性在LoginUserService类中的同一名称文件上方的Modules\AuthSaml2\Services路由上的getUser()方法中。登出方法的工作方式与登录方法完全相同,您可以在执行请求之前和接收响应之后控制用户。

联系方式

胡安·阿方索·萨马尔比德 - jzamarbide@kiteris.com 项目链接: https://github.com/visyon360/authsaml2-module