我正在关注这些:
- https://www.process-one.net/blog/ejabberd-19-08/
- https://docs.ejabberd.im/admin/configuration/authentication/#jwt-authentication
并使用https://mkjwk.org/创建了如下所示的 secret.key以匹配上面第一个 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):
auth_method: [jwt, ldap]
jwt_key: /opt/ejabberd/conf/secret.jwk
并且我仍然可以在我们的目录服务器中使用密码进行身份验证,但我不能使用 JWT。我认为我没有正确生成它,因为我只是像普通的共享密钥 JWT 一样对其进行签名。
谢谢,加文。