ejabberd中的oauth2身份验证支持

时间:2015-06-15 14:11:18

标签: oauth-2.0 erlang xmpp ejabberd

我目前正在寻找如何使用我们自己的应用程序中的oauth2令牌来验证ejabberd。

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

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

我正在寻找为我们的用户工作的单点登录。

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

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

https://github.com/yokomizor/ejabberd-auth-jwt

与ejabberd 18合作正常,并支持HMAC和RSA。我在一个小主机中使用它,但到目前为止看起来很稳定。

我还发现另一个模块做同样的事情,但有点过时:https://github.com/ParamountVentures/ejabberd-auth-jwt