我的问题如下:
我的应用程序受到涉及LDAP服务器的移动安全测试的保护。相应的领域称为LDAPrealm。我使用基于表单的身份验证器+自定义LDAP登录模块。
当与worklight服务器的连接丢失然后重新建立时,我看到当前用户不再在LDAP领域中进行身份验证。
我想要的是能够重新验证用户,而无需再次输入凭据。
但是,由于用户仍然在移动安全测试中默认包含其他域,因此工作灯服务器不会再次向客户端发送凭据,这会在尝试提交凭据时导致j_security_check错误。
另请注意,这些凭据存储在加密的json存储中,以便进行脱机身份验证和应用程序的使用。
所以我的问题是: 是否可以强制服务器再次为此LDAPrealm挑战客户端并使用submitLoginForm重新登录?
更一般地说,有没有办法在尝试再次登录之前从所有领域清除用户+设备?
编辑原因:上一个错误是由拼写错误引起的
答案 0 :(得分:4)
如果用户首先在线登录,则失去连接,然后再次连接,呼叫
WL.Client.logout("LDAPRealm",{onSuccess:stealthed_relog});
稍后在发送凭据之前在stealthed_relog中调用WL.Client.connect()
似乎会发挥所需的行为。
但是,当用户离线登录然后获取连接时,当我尝试使用WL.Client.connect()时,它表示已经调用了另一个WL.Client.connect实例。
编辑:对于日志脱机情况,应用程序会在连接事件触发后立即自动提出质询(心跳的原因?我真的不知道),所以你只需要使用
login_clientside.submitLoginForm();
再次成功登录。
如果有人有更好的方法在ldap服务器的工作灯中实现自动重新连接,请随意发布它,我将不接受我的回答。