ejabberd 中的 JWT 身份验证
JWT auth in ejabberd
我已按照此文档 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 and passed that token as a password while connecting to ejabberd through strophe.connect() as stated in this doc 的用户创建了 jwt 令牌。但是这个日志
的身份验证仍然失败
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 令牌进行身份验证
使用“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`
我已按照此文档 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 and passed that token as a password while connecting to ejabberd through strophe.connect() as stated in this doc 的用户创建了 jwt 令牌。但是这个日志
的身份验证仍然失败 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 令牌进行身份验证
使用“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`