gpt4 book ai didi

node.js - 与自定义 Web 应用程序共享 nextcloud 身份验证

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:01 30 4
gpt4 key购买 nike

我想开发一个使用 nextcloud 用户帐户的应用程序(NodeJS、vueJS、postgreSQL)。这个想法是用户使用他的 nextcloud ID 进行身份验证,然后可以访问 nextcloud 和我的网站。请注意,我的应用程序不是 nextcloud 模块或 nextcloud 应用程序。这是一个完整的网站,但我想基于 nextcloud 来识别用户

我在网上做了一些研究,但没有找到如何做的简单解释......这可能吗?

奥利维尔

最佳答案

您可以采取几种不同的方法来通过 nextcloud 实例中的帐户对外部应用程序的用户进行身份验证。其中包括:

  1. 在 nextcloud 实例中创建一个自定义应用,您的网站会将用户重定向到该应用。然后,所述自定义应用程序将(在 nextcloud 内成功进行身份验证后)使用访问 token (例如作为 GET url 查询参数)将用户重定向回您的应用程序。然后,您网站的后端会向自定义应用托管的 API 端点发送请求,以确定接收到的 token 的有效性(不推荐,我稍后会解释原因)。
  2. 询问用户其 nextcloud 登录凭据并尝试login via IMAP, SMB or FTP以确定所提供凭证的有效性。不建议使用此选项,因为它要求用户向您网站的后端公开其凭据。
  3. 使用与 1) 类似的方法,无需重新发明轮子 - 得益于 Nextcloud supports external authentication via OAuth 2.0

使用 OAuth 2.0 将允许您的网站通过 nextcloud 实例对外部用户进行身份验证。

以下是在您的情况下如何工作:

  1. 您的网站将用户重定向到 nextcloud 实例 (nextcloud-instance-address/index.php/apps/oauth2/authorize) 的 OAuth 授权端点(可以通过普通链接完成),同时使用客户端标识符进行身份验证
  2. Nextcloud 实例负责身份验证(用户会看到常规登录屏幕,其中包含有关您的网站想要访问其帐户的附加信息)
  3. 成功登录后,nextcloud 实例会生成请求 token 并将用户重定向回您的网站(重定向到指定的重定向 URI)
  4. 您的网站检索请求 token (通过重定向 URI 获取)并使用客户端 key 将其发送到 Nextcloud 实例的 token 端点 (your-instance-address/index.php/apps/oauth2/api/v1/token)。您的网站获取访问 token 作为响应。
  5. 您的网站现在可以使用访问 token (作为不记名 token )向 User provisioning API 发出授权请求您的 nextcloud 实例 nextcloud-instance-address/index.php/ocs/v2.php/cloud/user?format=json

最好将访问 token 存储在基于 Cookie 的 session 中。

设置非常简单(至少在您的 nextcloud 实例方面) - 您必须在 nextcloud 管理员帐户的管理员安全设置部分添加您的网站。您必须指定您的网站在成功登录后用于检索请求 token 的重定向 URI。 客户端 key 客户端标识符都将在 nextcloud 的管理面板中为您生成。

This tutorial将帮助您在 Node.js 中创建网站的后端。在您的情况下,消费者是您的网站,服务提供商是您的 nextcloud 实例。

如果有什么不清楚的地方,请随时询问。祝你好运,编码愉快!

关于node.js - 与自定义 Web 应用程序共享 nextcloud 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56089821/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com