Couchdb外部认证

我正在开发一系列实用程序应用程序,其中每个应用程序都可以在桌面,移动设备和网络上使用。 经过一番研究后,我决定与客户端上的pouchdb以及服务器上的couchdb一起提供脱机同步。

用户可以在网络上创建一个账户(Laravel Spark应用程序)来管理他们的应用程序订阅/付款以及访问应用程序的Web版本。 在移动设备和桌面上,用户可以使用他们的凭证登录每个应用程序来解锁功能。

我正计划在过滤复制(基于文件所属的应用程序)的情况下在couchdb中为每个用户提供一个数据库方法。 基本要求是用户可以在应用程序中登录一次,然后永远安全地复制到couchdb(直到退出)。

根据下面列出的用例,使用couchdb进行身份验证的最佳方法是什么?

  • 通过Laravel代理所有请求进行身份验证
  • 在Laravel应用程序中创建帐户时,使用随机生成的密码创建一个couchdb用户,并且当用户在应用程序中登录时返回此密码验证将来的请求(是否对创建的用户数量有限制)?
  • 使用Laravel应用程序作为oauth服务器,并使用oauth令牌直接向couchdb发出请求。
  • 还有别的吗?

  • 最后,我找到了通过Laravel将所有请求代理到CouchDB的最佳方法,利用Passport包进行API身份验证。

    为此,我使用SparkServiceProviderSpark::createUsersWith()函数,通过以下步骤设置用户注册的CouchDB数据库:

  • 生成一个couchdb特定的用户名并将其保存在用户记录中。
  • 创建一个与第1步中生成的名称相同的名称的couchdb数据库。
  • 使用过滤器将设计文档添加到数据库以进行特定于应用程序的同步。
  • 添加安全文档以仅允许从数据库所有者读取/写入(在后续步骤中创建)。
  • 使用步骤1中生成的用户名创建一个CouchDB用户。
  • 然后用户可以使用他们的用户名和密码登录到应用程序,以接收OAuth2密码授权令牌。

    随后,所有同步请求都将与身份验证令牌一起提交给我的同步代理控制器,详情请参阅本要点。

    要保存搜索,可以将PouchDB设置为自动发送OAuth令牌,如下所示:

    this._remoteDB = new PouchDB(url, {
        ajax : {
            headers : {
                "Authorization" : "Bearer " + localStorage.getItem("token")
            }
        }
    });
    
    链接地址: http://www.djcxy.com/p/81151.html

    上一篇: Couchdb external authentication

    下一篇: Authenticating a CouchDB user against an external server