我们已按照使用 OAuth2 Basic 插件配置 Auth0 注册和登录中的说明配置了 oauth2 插件。
流程如下:
如果他们点击登录然后使用您的 dbt 社区帐户,则帐户会成功创建,并且他们会看到可以设置用户名的帐户创建对话框等。
Loom 视频展示了此操作:
我已启用 oauth2 debug auth,并在日志中可以看到 (oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
我的问题:
- 这是 Discourse 问题还是 Auth0 问题?我假设是 Discourse 问题,因为类似的 Slack 登录流程可以正常工作。
- 为什么在登录页面上有效,但在从 Auth0 端触发登录时无效?
- 默认的 CSRF 错误消息表明它发生在浏览器更改时,或者登录流程花费的时间太长。这两种情况都不是,还有什么可能导致此问题?
david
(David Taylor)
4
您好 @joellabes - 请检查您在“应用程序登录 URI”Auth0 设置中输入的 URL 是什么?
它应该是 {your forum}/auth/oauth2_basic。如果您在末尾添加了 /callback,则可能会导致您描述的问题。
2 个赞
感谢 @david - 目前我在“应用程序登录 URI”框中没有任何内容,但在“允许的回调 URL”中有内容:
我应该将 https://discourse.getdbt.com/auth/oauth2_basic 放在“应用程序登录 URI”字段中,并将 https://discourse.getdbt.com/auth/oauth2_basic/callback 留在“允许的回调 URL”字段中吗?
1 个赞
david
(David Taylor)
6
当然可以。
您能否分享更多关于“在社区论坛获取帮助”链接的实现细节?该链接指向何处?我目前假设该按钮由 Auth0 处理,并且添加新的 URL 配置将使该按钮正确链接到 /auth/oauth2_basic 以启动登录流程。
1 个赞
抱歉回复缓慢——刚从圣诞假期回来!
我做了这个:
但结果仍然一样。
该链接指向 https://dev-zb38hsho.us.auth0.com/samlp/5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr,其中 dev-zb38hsho 是我们的 Auth0 实例 ID,5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr 是 Auth0 中 Discourse 应用程序的客户端 ID。
访问该链接会重定向到 https://dev-zb38hsho.us.auth0.com/u/login?state=SESSION_SPECIFIC_TOKEN。
david
(David Taylor)
8
关键在于 Discourse 需要从 /auth/oauth2_basic 开始身份验证流程,然后重定向到 Auth0,最后返回到 /auth/oauth2_basic/callback。
我曾希望 Auth0 能通过以第一个 URL 开始来触发登录,但听起来它直接将 Discourse 跳转到了回调 URL。
您能否将论坛上的按钮更新为指向 /auth/oauth2_basic?这将启动身份验证流程并立即重定向到 Auth0,因此整体用户体验应该是一样的。
4 个赞
是的,这样可以!它确实会暂停在一个带有“继续”按钮的中间页面;用户交互是否是安全触发 OAuth 流程所必需的,还是其他原因?
如果有一种方法可以做到
那将是锦上添花,但这已经很棒了!谢谢你 
david
(David Taylor)
10
当网站上有多种登录方式时,会显示该页面。如果禁用“本地登录”(用户名/密码),它应该会直接进入登录过程。
3 个赞
system
(system)
关闭
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.