Oauth 2.0 ejabberd中的oauth2身份验证支持

Oauth 2.0 ejabberd中的oauth2身份验证支持,oauth-2.0,erlang,xmpp,ejabberd,Oauth 2.0,Erlang,Xmpp,Ejabberd,我目前正在研究如何使用我们自己的应用程序中的oauth2令牌对ejabberd进行身份验证 是否有任何解决方案使我能够在我们自己的产品中进行身份验证,然后使用oauth2 JWT令牌对ejabberd进行身份验证 或者是另一个问题,如何将ejabberd用户与我自己的应用程序用户同步 我正在寻找一个单一的登录方式为我们的用户工作 我已经看到了使用每次登录时生成的令牌更新ejabberd用户密码的建议。然后使用用户名和令牌登录ejabberd。然而,这听起来不仅仅是一个黑客,而是一个真正的解决方案

我目前正在研究如何使用我们自己的应用程序中的oauth2令牌对ejabberd进行身份验证

是否有任何解决方案使我能够在我们自己的产品中进行身份验证,然后使用oauth2 JWT令牌对ejabberd进行身份验证

或者是另一个问题,如何将ejabberd用户与我自己的应用程序用户同步

我正在寻找一个单一的登录方式为我们的用户工作

我已经看到了使用每次登录时生成的令牌更新ejabberd用户密码的建议。然后使用用户名和令牌登录ejabberd。然而,这听起来不仅仅是一个黑客,而是一个真正的解决方案


有人有这方面的经验吗?我对Erlang没有任何经验。如果有人能给我指出正确的方向,那就太好了。

我看到了两种主要的正确方法来为ejabberd实现基于令牌的身份验证:

  • ejabberd自定义身份验证模块:您可以使用ejabberd钩子API为ejabberd编写自定义身份验证模块。您可以使用现有的Erlang
    ejabberd_auth*.erl
    作为示例

  • 使用允许对HTTP后端进行身份验证的贡献,并在该后端执行令牌检查。这样就不需要编写Erlang代码了。此类模块在ProcessOne Github上可用:


最近,我遇到了同样的问题,决定编写一个简单的ejabberd模块:

ejabberd 18可以正常工作,并且支持HMAC和RSA。我在一个小型主机上使用它,但到目前为止看起来很稳定


我还发现另一个模块也在做同样的事情,但有点过时:

@marco franssen,你能让它以任何一种方式工作吗?我也在寻找类似问题的解决方案,我们还没有投入时间。定制模块似乎是最好的选择。我们可能会使用ejabberd_auth_http模块来将Oauth2模块建立在这个模块的基础上。OAuth2当然是建立在HTTP协议之上的。