在 XMPP 中注册无密码用户

Posted

技术标签:

【中文标题】在 XMPP 中注册无密码用户【英文标题】:Register user without password in XMPP 【发布时间】:2017-08-18 15:59:18 【问题描述】:

我想实现与 Whatsapp 相同的注册功能(无需密码)。 我搜索了很多,但没有找到最佳解决方案。

目前我正在使用设备 ID 和密码来注册用户,并且工作正常。但如果用户退出或想从其他设备登录,那么我如何使用新设备 ID 继续他们?

我当前获取设备ID和注册用户的代码:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) 

        return;
    
String androidId = telephonyManager.getDeviceId();

AccountManager accountManager = AccountManager.getInstance(xmpptcpConnection);
        try 
            Localpart from = Localpart.from(mobileNumber);
            if (accountManager.supportsAccountCreation()) 
                accountManager.sensitiveOperationOverInsecureConnection(true);
                accountManager.createAccount(mobileNumber, androidId);

            
         catch (Exception e) 
            throw new SmackInvocationException(e);
        

【问题讨论】:

Vitalyster 的第 4 点运气好吗? 你能在没有密码的情况下连接吗? 【参考方案1】:
    如果我输入受害者的电话号码和设备 ID 以验证他的身份并阅读他的消息怎么办?首先,您需要通过短信/电话验证我可以使用一些验证码访问此电话号码。 如果我想用台式机或 Apple 设备登录我的帐户怎么办?您不应该依赖 Android 设备 ID,而且绝对不应该是密码。您可以在用户添加新设备时(经过验证!)创建随机令牌字符串,并将服务器上的所有令牌与用户电话号码相关联。 在这种情况下,我的应用程序将如何创建帐户?您应该在服务器上有一个自定义应用程序,它接收验证码并生成密码字符串。 我的应用程序将如何进行身份验证? XMPP 标准使用可插入的身份验证框架 (SASL),您的服务器和客户端应用应该实现一些“基于令牌”的 SASL 机制并使用它而不是“基于密码”。

【讨论】:

是的,我正在使用 OTP 对用户的手机进行身份验证。你能详细说明你的第四点吗?

以上是关于在 XMPP 中注册无密码用户的主要内容,如果未能解决你的问题,请参考以下文章

产品演示的无用户/密码授权流程

再也不用记密码啦:无密码认证时代将要到来

如果用户已经无密码登录,firebase 可以设置密码身份验证吗?

sqlplus无密码登录TNS协议适配器错误

金蝶k3 建立账套 用户名为Admin,初次进入时,密码为空。 初次登录,点击“确定”键,无反应,登录不了。求助

Alpha版本 - 测试报告