maxime-rainville / silverstripe-auth0
Auth0 验证器,用于 SilverStripe 4。
Requires
- auth0/auth0-php: ^5.1
- silverstripe/framework: ^4
- silverstripe/vendor-plugin: ^1.0
Requires (Dev)
- phpunit/phpunit: ~4.8
This package is auto-updated.
Last update: 2024-08-29 04:48:47 UTC
README
本模块提供了一种方式,可以在 Auth0 上验证 SilverStripe 用户。
什么是 Auth0?
Auth0 是一个身份服务提供商。它允许您轻松设置单点登录和社会登录等功能。
为什么要在 SilverStripe 中使用 Auth0?
假设您想快速允许用户使用 Facebook 或 Google 进行注册/登录。使用此模块,您可以在几分钟内完成此操作。
假设您管理着数十个网站。使用此模块,您可以在 Auth0 中管理所有网站的权限,并拥有一个单一的事实来源。
要求
- silverstripe/framework: ^4.0
- auth0/auth0-php: ^5.1
安装和基本设置
根据您的用例,使模块正常工作的具体设置可能会有很大差异。然而,以下步骤将是所有用例的起点。
先决条件
您需要一个功能正常的 SilverStripe 网站,以及一个有效的电子邮件地址的活跃管理员账户。
在此设置中,Auth0 完全接管了用户身份验证。因此,如果您没有现有的管理员账户,您将无法登录 CMS。
如果您禁用此模块,则您的原始凭据仍然有效。
安装
composer require maximerainville/silverstripe-auth0
设置 Auth0 账户和应用程序
请按照 SSO for Regular Web Apps: Auth0 Configuration 教程中的步骤进行操作。请确保至少配置一种连接类型(例如:Facebook、Google 等)
当被要求提供回调 URL 时,输入 http://example.com/Security/login/callback
,将 http://example.com/
替换为您的 SilverStripe 网站根 URL。
包括将使用此 Auth0 账户进行身份验证的所有域和协议变体。
在您的 Auth0 应用程序设置页面上,您将提供
- 一个 Auth0 域;
- 一个客户端 ID;
- 一个客户端密钥。
您将在下一步需要这些信息。
配置您的 SilverStripe 网站
将以下密钥添加到您的 SilverStripe .env
文件中,并输入上一步骤中的值
- AUTH0_DOMAIN ;
- AUTH0_CLIENT_ID ;
- AUTH0_CLIENT_SECRET。
运行网站的 dev/build
,您应该已经设置好了。
尝试使用它
如果您尝试访问任何需要身份验证的页面,而不是被重定向到 SilverStripe 登录页面,您将被重定向到您的 Auth0 身份验证屏幕。在他们的第一次登录时,如果用户使用的是社交媒体提供商,他们将被要求授权您的 Auth0 应用程序访问他们的账户。
一旦用户同意,他们将被重定向到您的网站。如果他们在您的网站上(基于他们的电子邮件地址)有现有账户,他们将登录。
如果用户没有现有账户,默认行为是拒绝访问。
如果您想允许其他用户访问,您只需像平时一样在 CMS 中创建成员即可。只要他们的电子邮件与 Auth0 提供的标识匹配,他们就会被允许进入。
请注意,在此设置中,每个用户的权限仍然完全由 SilverStripe 管理。Auth0 只是一个身份提供者。
替代设置
基本示例旨在简单,以便您可以在此基础上构建。此模块设计为灵活,您可以轻松地根据需求定制其行为。
以下是一些示例用例及其实现说明。它们按照复杂度的增加顺序排列。
- 允许任何人注册。
- 如果满足某些条件,则允许注册。
- 通过Auth0规则的基本授权提供程序。
- 通过Auth0授权扩展的高级授权提供程序