Oauth 2.0 Ejabberd 18.12.1-X-OAUTH2因令牌无效而失败-如何设置?

Oauth 2.0 Ejabberd 18.12.1-X-OAUTH2因令牌无效而失败-如何设置?,oauth-2.0,xmpp,ejabberd,Oauth 2.0,Xmpp,Ejabberd,我使用sqlite数据库作为默认数据库和ldap身份验证成功运行ejabberd 18.12 debian stretch backport大约2年 最近,我遇到一个应用程序,它只支持通过oauth进行xmpp身份验证,所以我尝试设置它,但没有成功 我的配置如下所示: hosts: - "domain.local" certfiles: - "/etc/ejabberd/ejabberd.pem" default_db: sql sql_type: sqlite sql_datab

我使用sqlite数据库作为默认数据库和ldap身份验证成功运行ejabberd 18.12 debian stretch backport大约2年

最近,我遇到一个应用程序,它只支持通过oauth进行xmpp身份验证,所以我尝试设置它,但没有成功

我的配置如下所示:

hosts:
  - "domain.local"

certfiles:
   - "/etc/ejabberd/ejabberd.pem"

default_db: sql
sql_type: sqlite
sql_database: "/var/lib/ejabberd/ejabberd.sqlite"

listen:
  -
    port: 5222
    ip: "0.0.0.0"
    module: ejabberd_c2s
    starttls_required: true
    tls_compression: false
    ciphers: "HIGH:!MEDIUM:!LOW:!3DES:!CAMELLIA:!aNULL:!RSA@STRENGTH"
    protocol_options:
      - "no_sslv3"
      - "no_sslv2"
      - "no_tlsv1"
      - "cipher_server_preference"
    max_stanza_size: 65536
    shaper: c2s_shaper
    access: c2s
    zlib: true

  -
    port: 5443
    module: ejabberd_http
    tls: true
    dhfile: "/etc/ejabberd/dhparams.pem"
    tls_compression: false
    ciphers: "HIGH:!MEDIUM:!LOW:!3DES:!CAMELLIA:!aNULL:!RSA@STRENGTH"
    protocol_options:
      - "no_sslv2"
      - "no_sslv3"
      - "no_tlsv1"
      - "cipher_server_preference"
    request_handlers:
      "files": mod_http_upload
      "/oauth": ejabberd_oauth
      "/api": mod_http_api


oauth_expire: 2592000
oauth_access: all

auth_method: [ldap,internal]

acl:
  admin:
     user:
         - "admin": "domain.local"
  local:
    user_regexp: ""
  loopback:
    ip:
      - "127.0.0.0/8"


access_rules:
  local:
    - allow: local
  c2s:
    - deny: blocked
    - allow: all
  c2s_shaper:
    - none: admin
    - normal: all
  announce:
    - allow: admin
  configure:
    - allow: admin
  muc:
    - allow: all
  muc_create:
    - allow: local
  pubsub_createnode:
    - allow: local
  register:
    - deny: all
  trusted_network:
    - allow: loopback
根据官方howto的说法,oauth仅对存储在mnesia数据库中的内部用户可用。(

因此,我通过ejabberd控制台为我的测试创建了一个本地用户,该测试不针对ldap进行身份验证

召唤

curl -i -POST 'https://localhost:5443/oauth/token' -d grant_type=password -d username=test@localhost -d password=test -d client_id=client-id-Iegh7ooK  -d client_secret=anynumberyouwant -d scope=sasl_auth 
成功返回令牌

当使用oauth在xmpp客户端中使用同一用户时,我检索“未授权”和以下错误日志:

2019-12-21 21:19:20.128 [info] <0.370.0>@ejabberd_listener:accept:238 (<0.671.0>) Accepted connection 192.168.0.100:2565 -> 192.168.0.231:5222
2019-12-21 21:19:20.248 [warning] <0.671.0>@ejabberd_c2s:handle_auth_failure:452 (tls|<0.671.0>) Failed c2s X-OAUTH2 authentication for test@domain.local from 192.168.1.100: Invalid token
2019-12-2121:19:20.128[info]@ejabberd_侦听器:accept:238()已接受连接192.168.0.100:2565->192.168.0.231:5222
2019-12-21 21:19:20.248[警告]@ejabberd_c2s:handle_auth_failure:452(tls |)的c2s X-OAUTH2身份验证失败test@domain.local从192.168.1.100开始:无效令牌
检查“ejabberdctl oauth_list_tokens”重试始终为空列表

我错过了什么

干杯, 路德维希