Discourse OAuth2 基础

我刚用 Authentik OAuth2 实现了这个功能,但在 oauth2 user json url 设置上遇到了一些麻烦。我使用了 Authentik 的 user_info 端点(/application/o/userinfo/),但我不知道如何映射字段。对于任何想了解如何设置 Discourse 与 Authentik 的 OAuth2 的人,这里是总结:

  • 用户 ID 路径:preferred_username
  • 用户名路径:preferred_username
  • 姓名路径:name
  • 邮箱路径:email
  • 邮箱已验证路径:email_verified
  • 头像:空。

我遇到了以下问题:

  1. 一开始,我在 JSON URL https://DOMAIN/application/o/userinfo/ 中忘记了末尾的斜杠。这导致用户信息请求(源永久链接)返回 301 HTTP 状态码,导致登录失败。我不知道按规范是否应该有末尾的斜杠,但也许应该正确处理 301。
  2. 调试这个过程很棘手。oauth2 debug auth 设置非常有用,但是……Logster 会在实际转储有意义的响应数据之前截断调试日志。我不得不手动修改容器中的日志行:
    log("user_json_response: #{user_json_response.status} #{user_json_response.headers} #{user_json_response.body}")
    
    也许可以更新那行日志?我想这可以帮助其他人找出 JSON 属性路径。
4 个赞