首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与自定义web应用程序共享下位云身份验证

问与自定义web应用程序共享下位云身份验证
EN

Stack Overflow用户
提问于 2019-05-11 11:18:42
回答 1查看 2.2K关注 0票数 1

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

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

奥利维尔

EN

回答 1

Stack Overflow用户

发布于 2019-05-18 17:32:15

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

  1. 在您的nextcloud实例中创建一个自定义应用程序,您的网站将将用户重定向到该应用程序。然后,该自定义应用程序(在nextcloud成功身份验证后)使用访问令牌(例如,作为GET url查询参数)将用户重定向回应用程序。然后,您的网站后端将向自定义应用程序承载的请求和API端点发送请求,以确定接收到的令牌的有效性(不推荐,我将在第二时间解释原因)。
  2. 向用户询问他们的nextcloud登录凭据,并尝试通过IMAP、SMB或FTP登录以确定提供的凭据的有效性。不建议使用此选项,因为它要求用户将其凭据公开到您网站的后端。
  3. 使用一种有点类似于1)的方法,而不需要重新发明轮子--这要归功于Nextcloud通过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获得它),并使用客户端秘密密钥将其发送到Nextcloud实例的令牌端点(your-instance-address/index.php/apps/oauth2/api/v1/token)。您的网站获取访问令牌作为响应。
  5. 您的网站现在可以使用访问令牌(作为承载令牌)向您的nextcloud实例nextcloud-instance-address/index.php/ocs/v2.php/cloud/user?format=json的用户配置API发出授权请求。

将访问令牌存储在基于cookie的会话中是个好主意。

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

本教程将帮助您在node.js中创建webiste的后端。在您的例子中,使用者是您的网站,服务提供者是您的nextcloud实例。

如果有些事情看上去不清楚的话,可以随意问一问。祝你好运,编码愉快!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56089821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档