带有 Auth0 的 CouchDB

CouchDB with Auth0

是否可以将 Auth0 与 CouchDB 或 Cloudant 一起使用?如果是这样,有人知道教程、代码示例或 github 示例项目吗?

这个问题已经在 Auth0-Forum 中提出(不是我提出的)但没有回应:https://auth0.com/forum/t/can-you-use-auth0-with-couchdb-or-cloudant/3127

在我的特殊情况下,我想将带有 Auth0 的 Ionic 2 应用程序连接到没有中间 (API) 层的 CouchDB 实例。

如有任何帮助,我们将不胜感激!

用户会在 couchdb 中拥有自己的数据库吗? 因为没有服务器端中间件,您将无法限制对用户数据的访问。 如果是这样,您可以考虑使用 oauth。

我对 Auth0 并不深入,但它似乎支持它 https://auth0.com/docs/oauth2-examples 也是 CouchDB http://docs.couchdb.org/en/stable/api/server/authn.html#oauth-authentication

有关于如何将它与 pouchdb 和 Auth0 一起使用的 couch_jwt_auth plugin which allows users to authenticate via JWT tokens and hence allows this kind of scenario. There's even an example project,所以我想这可能对您有用。

我正在使用相同的插件对用户进行身份验证,而且它工作得很好。我实际上维护了一个 fork 它允许使用非对称密钥 (RS256) 进行 JWT 签名验证 - 是的,一旦我有足够的信心就会有一个拉取请求。

试试这个:https://github.com/softapalvelin/couch_jwt_auth此插件允许用户通过 JWT 令牌进行身份验证。

CouchDB 3.1 支持开箱即用的 JWT 身份验证。

Couch docs on JWT auth are here.

基本上,更新配置的 [chttpd] 部分以包括下面的 JWT 部分。好吧,您可以删除默认的 and/or cookie,但保留它们非常有用:

[chttpd]
authentication_handlers = {chttpd_auth, cookie_authentication_handler}, {chttpd_auth, jwt_authentication_handler}, {chttpd_auth, default_authentication_handler}

然后添加这部分,文档中没有示例提到:

[jwt_auth]
; List of claims to validate
; As of couch 3.1, can NOT require issuer:
; required_claims = {iss, "http://issuer"} <-- does not work
; I left it blank and it's fine
required_claims =

然后添加或取消注释此部分:

[jwt_keys]
; Configure at least one key here if using the JWT auth handler.
; I found I had to inclue the 'kid' claim, even if it is just "_default".
; REMINDER: BASE64 ENCODED!
hmac:_default = aGVsbG8=
hmac:demo = aGVsbG8=

这是“你好”,base64 编码。

要为此获取 JWT,请执行以下操作:

// once off...
const secret = 'hello'

// then, in an express-jwt handler somewhere...
const token = sign(data, secret, { subject: user.name, audience, algorithm, keyid: 'demo' });
return res.send({ error: null, token })

我发现主题 (sub)、受众 (aud)、算法 (alg) 和 keyid (kid) 都必须包含在 JWT 中声明或 CouchDB 不会接受授权。