visyon360 / authsaml2-module
Requires
This package is not auto-updated.
Last update: 2024-09-29 01:40:58 UTC
README
关于项目
Visyon360 Starter的composer Auth-saml2包。
入门
先决条件
安装此包需要Composer 2.0
安装 & SAML配置
-
SAML实现配置是通过以下库完成的(更多信息可以在文档库网站上查找): aacotroneo/laravel-saml2 我们将通过Composer安装此库
composer require visyon360/authsaml2-module
-
然后你必须使用以下命令发布配置文件
php artisan vendor:publish --provider="Aacotroneo\Saml2\Saml2ServiceProvider"
-
你需要配置你的服务提供商和你的身份提供者。我们将扮演服务提供商角色,该功能的大部分默认完成,但如果你需要,你可以根据你的需求修改这些信息(如果我们更改ACS和SLS URL,我们必须通知IP更改)。为了配置SP和IP的属性,你必须更改config/saml2_settings。在模块中添加控制器的名称
'saml2_controller' => 'Modules\AuthSaml2\Http\Controllers\AuthController',
-
然后添加项目所需的其他idp,例如
'idpNames' => ['develop','staging','metaverso'],
-
然后我们需要在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' => '', ),
-
'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='), ),
-
'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