JWT与ejabberd一起使用的秘密?

JWT与ejabberd一起使用的秘密?,jwt,ejabberd,jwk,ejabberd-auth,Jwt,Ejabberd,Jwk,Ejabberd Auth,我以下是: 并创建了如下所示的secret.key,用于匹配上面第一个URL中的示例: 根据,因为这是HS类型: “简单地说,HS256必须与任何 想要验证JWT“ 因此,我天真地假设使用“k”作为秘密,在服务器上签署JWT,并在任何XMPP客户机(桌面上的stanza.io和pidgin)的密码字段中使用JWT 我误解了什么?我已确认ejabberd正确启动(通过ejabberdctl live和loglevel 4): 我仍然可以在我们的目录服务器中使用密码进行身份验证,但我不能使

我以下是:

并创建了如下所示的secret.key,用于匹配上面第一个URL中的示例:

根据,因为这是HS类型:

“简单地说,HS256必须与任何 想要验证JWT“

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

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

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

谢谢, Gavin.

“k”是用于签署生成的JWT的秘密,您假设正确

但是(和jabber)使用Base64 url(RFC 4648§5)编码的秘密。 请在签署JWT之前尝试解码“k”的值,因为任何其他库(和算法)通常不需要编码的秘密,特别是url编码的秘密


您可以签出以手动创建或修改JWT,并查看它们发生了什么,同时可以选择是否对机密进行编码。但是,它透明地处理base64 url编码。

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

`秘密地。在strophe.connect()中传递jabber id和jwt令牌之后,它就连接上了。 这是我的后端配置

      `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`

有人在JWK中使用共享秘密生成JWT吗?他们能用什么语言给我指一些?不用担心它是什么语言:-){“keys”:[{“kty”:“oct”,“use”:“sig”,“kid”:“testing”,“k”:研究结果表明,一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个研究者在一个非非非非非非非非非非HRU0TFZS3TSTYNA8XBCJ66EW9EBZTA“,“alg”:“HS256”}]}是JSON,但该k值不会解码为ascii。应该吗?不,密钥是二进制的,随机512位(或者你选择的任何长度)不会解码成任何可读的。谢谢@Panter4,你救了我一天!!在使用“k”生成我的令牌之前对其进行解码(base64解码)使其工作。我不知道这些工具总是生成base64编码的令牌,因此我必须在签名之前解码。你是说像k和kid应该一直为空,还是我需要用我的内容替换它?我使用了您的并生成了一个令牌,但没有使用。我的密钥文件如下所示{“kty”:“oct”,“use”:“sig”,“k”:8月8日,一家金融公司在一家金融服务公司的一家金融服务公司在一家金融服务公司的一家金融服务公司的一家金融服务公司在一家金融服务公司的一家金融服务公司在一家金融服务公司的一家金融服务公司在一家金融服务公司的一家金融服务公司在一家金融服务公司的一家金融服务公司在一家金融服务公司的一家金融服务公司在一家金融服务公司的一家公司在一家公司一家高电阻2欧姆或者一家公司一家高高2欧姆的高电阻2欧姆2 2个高电阻2 2个高电阻2个高电阻2个高电阻2个高电阻2个高电阻2个高电阻2个高电阻的公司,在一家在一家公司在一家在一家公司一家在一家公司一家非非非非一家公司,一家公司在一家金融服务公司在一家公司一家一家一家公司在一家一家一家一家非非非非非非非非非非非6F_5afNWzLB9hYJ5-AZCMKSZRPGAVAVUAOIYW“,“alg”:“HS256”}任何人都可以帮助我生成令牌,我可以登录我的ejabbred吗?
"keys": [
    {
        "kty": "oct",
        "use": "sig",
        "kid": "",
        "k": "",
        "alg": "HS256"
    }
]
      `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`