directlease / auth0

Auth0通用登录模块的Silverstripe插件

安装: 813

依赖项: 0

建议者: 0

安全性: 0

星星: 0

关注者: 4

分支: 1

开放问题: 0

类型:silverstripe-module

2.12 2024-02-02 10:27 UTC

README

这是一个Auth0与通用登录结合使用的Silverstripe 4模块。无论您是想使用‘经典’还是‘新’通用登录,此模块都与两者兼容。

了解更多关于Auth0通用登录的信息

概述

此模块为您的Silverstripe设置添加了额外的登录功能,用户和管理员都可以使用。当将用户重定向到/auth/login(由本模块提供的路由)时,Auth0 SDK将准备新的登录并将用户重定向到您的Auth0租户登录页面(通用登录)。

在此页面上,用户可以使用Auth0登录或注册您的应用程序。一旦用户通过Auth0认证,他将被重定向到您的网站上的/auth/callback(也由本模块提供)。模块将检查您的网站上是否有与认证的Auth0用户相同的电子邮件地址,如果有,则为该用户执行登录。如果没有找到匹配的用户,则模块将尝试回退到默认用户,有关更多信息请参阅下文。

您可以在/auth/login URL中添加一个'redirect_to'参数,一旦用户登录,他将被重定向到该URL。如果省略,则用户将被重定向到主页。

####默认用户您可能由于各种原因(GDPR、黑客攻击潜在的安全风险等)不希望在您的网站数据库中存储用户/客户信息。
但您确实希望限制公众对(部分)应用程序的访问。为此,我们决定添加默认用户登录。

默认用户是一个具有固定电子邮件地址、没有密码和固定权限的成员对象。此成员对象将用于您的网站上的每个用户,除了管理员。

您可以从Auth0检索有关用户的全部信息,并将其分配给默认成员。这些信息将存储在会话中而不是数据库中。一旦用户离开网站,会话将被销毁,他的信息将不再属于您(公司)。

如果您的网站为用户使用不同的组和管理权限,则此用例不适合您。需要支持多个默认用户,但这不在路线图中。

路由

以下路由可与此模块一起使用

  • /auth/login - 用户将被发送到Auth0进行认证
    • 可选 - 如果您想在用户登录后将其重定向到特定URL,则可以添加URL参数。参数是redirect_to,URL将变为auth/login?redirect_to=my-profile以重定向到我的个人资料页面。它可以是一个内部或外部URL。
  • /auth/logout - 用户将在您的网站和Auth0上注销
  • /auth/updateUserMetadata - 您可以更新Auth0上的用户元数据(需要M2M Auth0应用程序)
  • /auth/checkAndCreateAuth0UserAccount - 如果您想检查某人是否已有Auth0账户,如果没有则创建一个(需要M2M Auth0应用程序)
  • /auth/sendVerificationMail - 当前登录用户将从Auth0收到一封电子邮件以验证他在Auth0上的账户(需要M2M Auth0应用程序)
  • /auth/getIdByEmail - 向此路由发送电子邮件地址,如果用户存在,则返回用户的Auth0 ID,否则返回null

安装

composer require directlease/auth0

配置

您可以将Auth0信息放入您的站点配置文件中。您可以在此处找到所有必需的配置设置

示例站点配置文件

以下配置设置是必需的

  • client_id - 您Auth0应用程序的客户端ID
  • client_secret - 您Auth0应用程序的客户端密钥
  • domain - 您Auth0应用程序的域名
  • redirect_uri - Auth0需要一个指向您站点的完全限定URL。默认值为 /auth/callback,它将被转换为 https://www.mysite.com/auth/callback
  • cookie_secret - Auth0用于加密会话cookie的长期密钥值,请参阅Auth0文档以获取说明
  • scope - 您要从在Auth0登录的用户处检索的属性范围。注意:现在它是一个数组,而不是字符串。默认为 - 'openid' - 'email' - 'profile'
  • persisent_login - 您是否想使用SilverStripe的持久登录,true或false。

以下配置设置根据您的实现是可选的

  • m2m_client_id - 您的机器到机器(M2M)Auth0应用程序的客户端ID(您可以选择创建单独的M2M应用程序并将其与管理工作API连接。如果您想使用管理工作API并想使用您创建的Web应用程序连接,则在此处使用与Web应用程序相同的客户端ID和客户端密钥)
  • m2m_client_secret - 您的机器到机器(M2M)Auth0应用程序的客户端密钥
  • namespace - 您在Auth0规则中使用的命名空间
  • default_mailaddress - '默认'用户的电子邮件地址(有关信息请参阅实现)
  • multi_locale - 如果您使用Fluent并将区域设置作为extraParams发送给Auth0,则为布尔值。

登录的最小设置步骤

我们只涵盖使模块正常工作的所需内容,Auth0允许您进行更多配置。

  • 为您的Auth0租户设置一个类型为“常规Web应用程序”的应用程序。
  • 将新创建的应用程序的允许回调URL设置为您的redirect_uri的值(https://www.mysite.com/auth/callback

用户管理

您需要配置您的租户的管理API并授予非交互式客户端在Auth0中的正确作用域。管理工作API用于Auth0ApiController中的'updateToAuth0'函数。

您需要配置租户设置中的允许注销URL,以便注销功能正常工作。

V4更新

登录后重定向:将用户发送到登录URL(/auth/login)并附加?redirect_to=与您希望的目标URL。它可以是本地URL,然后只需传递/home或/welcome或外部 https://www.github.com

如果您想使用验证电子邮件和其他需要令牌的功能,您必须在您的Auth0租户中创建一个机器到机器(M2M)应用程序,并在此应用程序上启用管理工作API,并设置正确的作用域。