微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么使用Auth0的CouchDB JWT身份验证对我不起作用?

如何解决为什么使用Auth0的CouchDB JWT身份验证对我不起作用?

我一直在尝试将CouchDB中的JWT身份验证方法与Auth0一起使用。按照https://docs.couchdb.org/en/stable/api/server/authn.html#jwt-authentication上的文档,我在我的default.ini文件添加了authentication_handlers,并按如下所示配置了jwt_auth和jwt_keys:

[jwt_auth]
; List of claims to validate
required_claims = alg,kid,sub

[jwt_keys]
rsa:<kid> = -----BEGIN PUBLIC KEY-----\n
<PublicKey>
\n-----END PUBLIC KEY-----\n

我从Auth0(https:// [myDomain] /.well-kNown/jwks.json)得到了孩子和公共密钥。现在,当我请求JWT令牌并将其添加到_session端点的CouchDB请求中时,我得到以下响应:

{
    "ok": true,"userCtx": {
        "name": null,"roles": []
    },"info": {
        "authentication_handlers": [
            "cookie","default"
        ]
    }
}

我觉得我在default.ini文件中做错了什么。谁能帮我吗?

解决方法

您似乎尚未在CouchDB中启用JWT身份验证。我之所以这样说,是因为:

    "info": {
        "authentication_handlers": [
            "cookie","default"
        ]
    }

还应包括"jwt"

要实现这一点,CouchDB配置中的[chttpd]块应包括:

{chttpd_auth,jwt_authentication_handler}

此外,我认为您无需列出这三个必需的声明。就在前几天,我得到了这项工作,而Couch要求这些,因此您无需列出它们。确实,当我列出其中任何一个时,我都会收到有关“重复要求”之类的错误。

此外,请确保JWT中没有iss(发布者)声明。这个问题可能会在将来的版本中解决,但是在撰写本文时,要使其与Couch 3.1配合使用,我必须明确确保没有iss声明。

更多详细信息in this issue

,

所以这很尴尬,但我的问题是我没有以 PEM 格式输入公钥,所以我所要做的就是使用这个命令:

curl https://[myDomain]/pem -s | openssl x509 -pubkey -noout

获取 PEM 格式并使用它来配置 CouchDB。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。