boogiebaeren/contao-google-sso-bundle

0.6.3 2024-02-13 22:51 UTC

This package is auto-updated.

Last update: 2024-09-30 17:16:39 UTC


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客户端。 img.png 然后选择“Web应用程序”作为应用程序类型,输入名称并添加授权的重定向URI https://<your-domain>/contao/login_sso/redirect。创建OAuth客户端后,您可以将客户端ID和客户端密钥复制到Contao安装根目录下的.env.local文件中。

不要忘记在OAuth同意屏幕中将用户类型设置为“内部人员”,否则任何谷歌用户都可以登录! img.png

配置环境变量后,您可以使用新的登录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