【问题标题】:Sharing nextcloud authentication with custom web application与自定义 Web 应用程序共享 nextcloud 身份验证
【发布时间】:2019-09-29 02:01:35
【问题描述】:

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

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

奥利维尔

【问题讨论】:

    标签: node.js authentication vue.js nextcloud cross-application


    【解决方案1】:

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

    1. 在您的 nextcloud 实例中创建一个自定义应用程序,您的网站会将用户重定向到该应用程序。然后,所述自定义应用程序将(在 nextcloud 内成功验证后)使用访问令牌(例如作为 GET url 查询参数)将用户重定向回您的应用程序。然后,您网站的后端会向自定义应用托管的 API 端点发送请求,以确定接收到的令牌的有效性(不推荐,我稍后会解释原因)。
    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 实例会生成一个请求令牌并将用户重定向回您的网站(到指定的重定向 URI
    4. 您的网站检索 请求令牌(它通过 重定向 URI 获取)并使用 Client 将其发送到 Nextcloud 实例的令牌端点 (your-instance-address/index.php/apps/oauth2/api/v1/token)密钥。您的网站获取访问令牌作为响应。
    5. 您的网站现在可以使用 访问令牌(作为不记名令牌)向您的 nextcloud 实例 nextcloud-instance-address/index.php/ocs/v2.php/cloud/user?format=jsonUser provisioning API 发出授权请求

    最好将 访问令牌 存储在基于 cookie 的会话中。

    设置非常简单(至少在 nextcloud 实例一侧) - 您必须在 nextcloud 管理员帐户的管理员安全设置部分添加您的网站。您必须指定您的网站在成功登录后用于检索 请求令牌 的重定向 URI。 Client secret 密钥和 Client Identifier 都将在 nextcloud 的管理面板中为您生成。

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

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

    【讨论】:

    • 谢谢美女!非常感谢您的完整回答:) 我会尝试 OAuth2 解决方案
    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2015-09-07
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多