Worklight身份验证的问题

时间:2014-03-18 18:10:22

标签: ibm-mobilefirst worklight-adapters worklight-security

我正在尝试使用Worklight customSecurityTest开发自定义登录表单,该表单基于SingleStepAuthAdapter应用程序示例。

基本上,我注意到SingleStepAuthAdapater中使用的登录功能总是在用户尝试访问安全功能之后被调用(之后,在登录操作时,安全数据被发送给用户),但是如果我尝试直接调用submitAuthentication函数,在任何尝试访问安全函数之前(我已经反转了"登录页面"使用"获取安全数据"页面),我得到了firebug上的以下错误/ lo:

  

enter image description here

两个POST调用是Worklight在登录操作上引发的两次相同的函数(SingleStepAuthAdhater中的submitAuthentication函数,由singleStepAuthRealmChallengeHandler.submitAdapterAuthentication(invocationData,{})调用)并且该错误与两次请求身份验证的事实有关:可能在执行身份验证请求时,在handleChallenge内部调用submitSuccess()函数后发出此函数两次(事实上,当我删除submitSuccess invokation时,问题不会发生,但WL框架不是通知,例如isUserAuthenticated函数返回false,直到执行对安全资源的访问为止。

如何解决此问题?使用工作灯开发简单登录表单的最佳实践是什么,允许在访问受保护资源之前进行身份验证?我找到了一些解决方法(比如在执行submitAuthentication之前执行虚假数据请求,但我希望你能建议我一个更好的解决方案)。

我已经咨询了信息中心和入门模块,但可能是由于我的错,我无法找到任何有用的信息

1 个答案:

答案 0 :(得分:2)

通常的做法是为您的应用设置一个初始空白页面或视图。

在WLCommonInit中,要么访问受保护的资源(这就是getsecretdata的全部内容),要么调用WL.Client.login()。另一个选项(由@ tk27建议)是在应用程序描述符中保护应用程序并将登录时的连接设置为true。这将在应用程序启动时触发身份验证。

您的质询处理程序应显示登录提示对话框,当身份验证成功完成后,转换到您应用的第一个真实页面。

这样,身份验证仍然是为了响应来自WL服务器的挑战(必须如此),但在登录成功之前,您只看到空白页面到登录提示符。