directlease / auth0
Auth0通用登录模块的Silverstripe插件
Requires
- ext-json: *
- auth0/auth0-php: ^8
- guzzlehttp/guzzle: ^7
- silverstripe/framework: ^4 || ^5
- silverstripe/vendor-plugin: ^1 || ^2
- silverstripe/versioned: ^1 || ^2
- tractorcow/silverstripe-fluent: ^5||^6||^7
This package is auto-updated.
Last update: 2024-09-22 09:28:49 UTC
README
这是一个Auth0与通用登录结合使用的Silverstripe 4模块。无论您是想使用‘经典’还是‘新’通用登录,此模块都与两者兼容。
概述
此模块为您的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,并设置正确的作用域。