首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与ejabberd一起使用的JWT秘密?

与ejabberd一起使用的JWT秘密?
EN

Stack Overflow用户
提问于 2020-04-28 22:03:28
回答 2查看 1.2K关注 0票数 2

我在跟踪这些:

并使用secret.key创建了如下所示的https://mkjwk.org/,以匹配上面第一个URL中的示例:

根据https://auth0.com/blog/navigating-rs256-and-jwks/的说法,这是一种HS类型:

“简单地说,HS256必须与任何希望验证JWT的客户端或API共享一个秘密”。

因此,我天真地假设使用"k“作为在服务器上签名JWT的秘密,在任何XMPP客户端的密码字段(桌面上的stanza.io和pidgin )中使用JWT。

我误会什么了?我已经确认ejabberd正确启动(通过ejabberdctl live和loglevel 4):

代码语言:javascript
复制
auth_method: [jwt, ldap]
jwt_key: /opt/ejabberd/conf/secret.jwk

而且我仍然可以使用目录服务器中的密码进行身份验证,但不能使用JWT。我认为我没有正确地生成它,因为我只是像一个普通的共享密钥JWT一样对它进行签名。

谢谢加文。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-07 15:11:44

我能够使用jwt令牌进行身份验证,使用"k“签名JWT,放置密钥集

代码语言:javascript
复制
"keys": [
    {
        "kty": "oct",
        "use": "sig",
        "kid": "",
        "k": "",
        "alg": "HS256"
    }
]

‘在secret.jwk。在strophe.connect()中传递jabber id & jwt令牌之后,它就连接起来了。这是我的后端配置

代码语言:javascript
复制
      `auth_method: [jwt, sql]
       jwt_key: /usr/local/etc/ejabberd/secret.jwk
       default_db: sql
       new_sql_schema: true
       sql_type: mysql

       access_rules:
       jwt_only:
        deny: admin
        allow: all
       local:
        allow: all
       c2s:
         deny: blocked
         allow: all
       announce:
         allow: admin
      configure:
        allow: admin
      muc_create:
        allow: all
      pubsub_createnode:
       allow: local
      trusted_network:
       allow: loopback

     jwt_auth_only_rule: jwt_only`
票数 2
EN

Stack Overflow用户

发布于 2020-05-28 15:41:11

"k“是用来对您生成的JWT签名的秘密,您的假设是正确的。

然而,https://mkjwk.org (和jabber)使用Base64 64-url (RFC 4648§5)编码的秘密。在签署JWT之前,请尝试解码"k“的值,因为任何其他库(和算法)通常都不期望有编码的秘密,特别是url编码的秘密。

您可以签出https://jwt.io/,手动创建或修改JWT,并查看这些JWT发生了什么,并选择是否对秘密进行编码。然而,它以透明的方式处理base64 64-url编码。

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

https://stackoverflow.com/questions/61490726

复制
相关文章

相似问题

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