【问题标题】:JWT auth in ejabberdEjabberd 中的 JWT 身份验证
【发布时间】:2020-12-25 21:43:00
【问题描述】:

我已按照此文档ejabberd authentication 将 ejabberd 服务配置为使用 jwt 令牌对用户进行身份验证。在 ejabberd.yml 文件中,我配置了如下的身份验证机制

`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

`

。从jwt.io 为用户创建 jwt 令牌,并在通过 strophe.connect() 连接到 ejabberd 时将该令牌作为密码传递,如doc 中所述。但是此日志仍然无法通过身份验证

 Send XML on stream = <<"<failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><not-authorized/><text xml:lang='en'>Invalid username or password</text></failure>">>

有没有人遇到过这个问题并设法解决了这个问题?

TIA!

【问题讨论】:

    标签: jwt token ejabberd jwt-auth strophe.js


    【解决方案1】:

    对于陷入此困境的任何人,我都可以通过以下配置使用 jwt 令牌进行身份验证

    使用“k”签署 JWT,放置密钥集 `

    "keys": [
        {
            "kty": "oct",
            "use": "sig",
            "kid": "",
            "k": "",
            "alg": "HS256"
        }
    ]
    

    ` 在 secret.jwk 中。在 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`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-20
      • 2020-11-16
      • 2015-08-31
      • 2020-03-18
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多