简体中文
  • Idp
  • apache answer
  • community

Logto 实际操作:无缝集成 Apache Answer 为你的用户启动一个社区

演示如何利用 Logto 的第三方应用功能集成 Apache Answer,创建一个统一的社区平台,让用户可以通过现有账户无缝访问支持。

Yijun
Yijun
Developer

不要在用户认证上浪费数周时间
使用 Logto 更快地发布安全应用。几分钟内集成用户认证,专注于您的核心产品。
立即开始
Product screenshot

构建一个优秀的软件产品是一项重要成就,但实际上只是旅程的开始。

任何应用程序的长期成功和演变在很大程度上依赖于理解和与用户互动,这涉及收集反馈、识别痛点、回答问题和解决问题——这是推动迭代和改进的关键循环。

在本文中,我将:

  • 解释 Logto 的第三方应用程序(OIDC)功能的工作原理。
  • 向你展示如何使用 Logto 来集成 Apache Answer 为你的用户建立一个社区,使他们能够提出问题、分享想法,并从你的团队和其他用户那里获得帮助。

使用 Logto 的亮点在于用户使用与自己系统相同的账户登录社区。这使你能够轻松了解提问者的当前状态,无需多次往返交流以询问他们在软件中的情况。

什么是 Apache Answer

apache-answer.png

Apache Answer 是一个开源的问答平台,连接用户和团队。它创建了一个共享知识和共同解决问题的空间。该平台具有实时 Markdown 预览、高级搜索和内容投票系统。

该平台支持开箱即用的 OAuth 2.0 登录。这使它自然兼容现有的身份提供者如 Logto。用户可以使用他们的现有账户登录,而无需专门为社区平台创建新凭证。

了解 Logto 的第三方应用功能

当我们希望用户使用他们的 Logto 账户登录第三方应用程序时,Logto 充当你应用程序的身份提供者(IdP)。

可将其视为负责验证你的用户身份的中央权限。当用户登录你的主应用程序时,可能会将他们重定向到 Logto 进行身份验证过程(用户名/密码、社交登录等)。一旦 Logto 成功验证用户,它会告诉你的应用程序,“是的,这个用户是合法的”,并提供一些关于他们的基本信息。

这一概念不仅限于你的主应用程序。Logto 包含一个强大的功能 —— 第三方应用程序。这一功能允许 Logto 不仅为你自己的应用程序履行其 IdP 角色,还为你希望用户访问的其他外部应用程序进行身份验证。

它通过 OpenID Connect (OIDC) 实现,这是一个建立在 OAuth 2.0 协议之上的标准身份层。简单来说,OIDC 允许一个应用程序(如 Apache Answer,称为信赖方或客户端)请求并接收来自 IdP(Logto)的用户身份信息。

当你在 Logto 中为 Apache Answer 配置一个 OIDC 应用程序时,你本质上是在告诉 Logto:“如果 Apache Answer 请求,并且用户同意,请准备好代理它对用户进行身份验证,并以安全的方式向 Answer 发送一些基本的用户身份详细信息。”这种能力是解锁在你的 Logto 认证应用程序和第三方工具如 Apache Answer 之间实现无缝单点登录(SSO)的关键。

场景设置:YourApp + Logto + Apache Answer

在深入配置之前,让我们明确一下我们场景中涉及的组件:

  1. YourApp: 这是你的主要 Web 或移动应用程序,用户已经在其中注册和登录。关键是,YourApp 与 Logto 集成进行身份验证。
  2. Logto: 你的中央 IAM 平台,作为 IdP。你的用户帐户由 Logto 管理。
  3. Apache Answer: 你希望部署为 YourApp 用户的社区中心的开源问答平台。我们的目标是配置 Answer 使用 Logto 登录,而不是其自身的本地用户名/密码系统。

实践步骤:配置 Logto 和 Apache Answer

现在,让我们实际操作。该过程涉及在 Logto 和 Apache Answer 中进行配置。

安装 Apache Answer

按照 官方安装指南 安装 Apache Answer。最后默认可以在 http://localhost:9080 访问。

在 Logto 中创建一个 OIDC 应用程序

  1. 登录你的 Logto 控制台。
  2. 导航到应用程序页面。
  3. 点击页面右上角的 "创建应用程序" 按钮(如果没有看到该按钮,点击框架列表底部的 "查看全部")。
  4. 选择 "第三方应用程序" 类别,然后选择 "OIDC"
  5. 输入应用程序名称(例如 "Apache Answer Community")和描述(可选)。
  6. 点击 "创建" 完成创建。创建应用程序后,你将被重定向到应用程序详细信息页面。
  7. 在详细信息页面中,将 http://localhost:9080/answer/api/v1/connector/redirect/basic 添加到 重定向 URI 字段。
  8. 点击 "保存" 以保存应用程序。

为 Apache Answer 配置权限

  1. 在应用程序详细信息页面,导航到 权限 选项卡。
  2. 授予用户数据权限 下,你会看到一条消息说“你还没有设置任何用户数据的授予权限。”
  3. 点击 添加 按钮以配置 Apache Answer 可以访问的用户信息。
  4. 选择必要的范围(profileemail)以允许 Apache Answer 在登录时接收基本的用户信息。
  5. 保存你的权限设置。

logto-grant-permissions.png

在 Apache Answer 中配置 OAuth 登录

  1. 使用管理员账户登录你的 Apache Answer。
  2. 访问 http://localhost:9080/admin管理 仪表板。
  3. 导航到 插件 -> 已安装插件 并激活 OAuth2 Basic 插件。
  4. 导航到 OAuth2 Basic 插件页面。
  5. 根据你刚创建的 Logto 第三方应用填写以下信息:
    • 名称:在登录页面显示的连接器名称
    • 客户端 ID:应用程序详细信息页面的 "App ID"。
    • 客户端密钥:详细信息页面 "端点和凭证" 部分的 "App Secret"。
    • 认证 URL:详细信息页面 "端点和凭证" 部分的 "Authorization endpoint"。
    • 令牌 URL:详细信息页面 "端点和凭证" 部分的 "Token endpoint"。
    • 用户 JSON URL:详细信息页面 "端点和凭证" 部分的 "Userinfo endpoint"。
    • 用户 ID JSON 路径sub
    • 用户显示名称 JSON 路径name
    • 用户用户名 JSON 路径username
    • 用户邮箱 JSON 路径email
    • 用户头像 JSON 路径picture
    • 用户邮箱验证 JSON 路径email_verified
    • 范围openid,profile,email
  6. 保存 插件配置在 Apache Answer 中。

注意:一定要包括 openid 范围,这是 OIDC 标准要求从用户 JSON URL 中获取用户信息所必需的。由于 Logto 的第三方应用是基于 OIDC 实现的,而 Apache Answer 的插件使用 OAuth 2.0,确保这两系统之间的正确认证流程,这是必需的。

检查点:测试集成

通过配置 Logto 和 Apache Answer,让我们来看看无缝的用户体验:

  1. 访问你的 Apache Answer,你会看到登录页面上有一个 “Connect with Logto” 按钮。

connect-with-logto.png

  1. 点击按钮,你将被重定向到 Logto 的登录页面。

  2. 点击 “Connect with Logto” 按钮后,你将重定向到 Logto,你可以使用现有账户登录。然后你将看到一个授权页面,询问是否同意向 Apache Answer 分享你的信息。

consent-page.png

  1. 当你批准权限后,你将被重定向回 Apache Answer,你将看到你已经登录!

answer-dashboard.png

注意:Apache Answer 会检查登录用户的邮件是否已验证。当用户没有邮件信息时,Apache Answer 将要求他们提供一个进行验证。

总结集成的好处

为什么要经过这些步骤?优势是显而易见的:

  • 用户体验: 这一点最为明显。用户无需创建或记住另一组凭证。他们使用他们已经信任的登录,提供一个流畅、无摩擦的社区进入体验。这极大地降低了参与的门槛。
  • 开发效率: 你完全绕过了在 Apache Answer 内构建和维护单独的用户认证、注册、密码重置流程等的需求。你可以立即利用现有的 Logto 用户基础,允许你更快地启动社区。
  • 安全性: 身份认证被委托给 Logto,你的专业 IAM 提供商,它可能在处理诸如多因素认证(MFA)、密码政策、暴力破解保护等安全方面比在 Answer 内的自定义实现更为稳健。你可以依赖经过成熟和良好审查的 OIDC 标准。
  • 产品价值和支持效率: 你立即增加了一个有价值的社区功能而不碎片化你的用户身份。如前所述,知道社区用户和产品用户是相同的使你的支持团队能够提供更具上下文和更有效的帮助,提高用户满意度和参与度。

结论

集成第三方工具对于构建丰富的应用生态系统至关重要,但管理跨这些工具的用户身份可能是一个重大麻烦。正如我们用 Apache Answer 所演示的,Logto 的第三方应用程序(OIDC)功能为弥合这一差距提供了一种强大而标准化的方法。

通过将 Logto 配置为 Apache Answer 的中央身份提供者,你可以有效地**“一键”开启**一个为现有用户准备的专用社区空间,为他们提供无缝登录体验,并为你的团队提供统一的用户身份带来的好处。

更令人兴奋的是,这一模式不仅限于问答平台;它可以应用于分析仪表板、项目管理工具、内部工具和无数其他应用程序,让你能够构建一个连贯且用户友好的软件生态系统。

敬请期待未来的文章,我们可能会探索使用 Logto 集成其他有用工具!