boogiebaeren / contao-google-sso-bundle
Requires
- php: ^8.1
- ext-json: *
- contao/core-bundle: ^4.13 || ^5
- google/apiclient: ^2.15
- symfony/config: ^5.4
- symfony/dependency-injection: ^5.4
- symfony/http-kernel: ^5.4
Requires (Dev)
- contao/easy-coding-standard: ^4
- contao/manager-plugin: ^2.0
- phpstan/phpstan: ^1.10
- phpstan/phpstan-symfony: ^1.2
- phpunit/phpunit: ^10
README
添加新的登录URL(/contao/login_sso
),以便使用Google Workspace实例内的现有用户登录到Contao后端。
安装
通过Composer安装此包:composer require boogiebaeren/contao-google-sso-bundle
,或者通过Contao Manager进行安装。
配置
您需要定义两个环境变量
- GOOGLE_SSO_CLIENTID
- GOOGLE_SSO_CLIENTSECRET
然后,您需要将以下配置添加到您的config/config.yaml
文件中
# config/config.yaml contao_google_sso: client_id: '%env(GOOGLE_SSO_CLIENTID)%' client_secret: '%env(GOOGLE_SSO_CLIENTSECRET)%' hosted_domain: your-google-workspace-domain-name
您还应该将以下内容添加到您的composer.json
文件中,以删除所有未使用的Google服务
{ "extra": { "google/apiclient-services": [ "Oauth2" ] }, "scripts": { "pre-autoload-dump": "Google\\Task\\Composer::cleanup" } }
您需要成为Google Workspace实例的管理员才能创建新的OAuth客户端。首先在Google Cloud Console内创建一个新的项目,然后创建一个新的OAuth客户端。 然后选择“Web应用程序”作为应用程序类型,输入名称并添加授权的重定向URI
https://<your-domain>/contao/login_sso/redirect
。创建OAuth客户端后,您可以将客户端ID和客户端密钥复制到Contao安装根目录下的.env.local
文件中。
不要忘记在OAuth同意屏幕中将用户类型设置为“内部人员”,否则任何谷歌用户都可以登录!
配置环境变量后,您可以使用新的登录URL(https://<your-domain>/contao/login_sso
)登录。
将登录集成到be_login页面
如果您不想使用不同的登录URL,也可以覆盖be_login.html5
模板。为此,您可以在templates
文件夹下创建一个be_login.html5
文件,并添加以下代码片段(替换)
<?php $this->extend('be_login'); ?> <?php $this->block('head'); ?> <?php $this->parent(); ?> <script src="https://#/gsi/client" async></script> <?php $this->endblock(); ?> <?php $this->block('container'); ?> <?php $this->parent(); ?> <div id="g_id_onload" data-client_id="<YOUR_CLIENT_ID>" data-context="signin" data-login_uri="https://<your-domain>/contao/login_sso/redirect" data-auto_select="false" data-close_on_tap_outside="false" data-itp_support="true"> </div> <?php $this->endblock(); ?>
参考
此包受https://github.com/BROCKHAUS-AG/contao-microsoft-sso-bundle的启发,并使用类似的流程。
关于谷歌登录的文档:https://developers.google.com/identity/authentication