【问题标题】:Connection issues from certain devices某些设备的连接问题
【发布时间】:2014-10-03 21:44:42
【问题描述】:

无法使用自定义身份验证器和 ChallengeHandler 从设备连接。

这是来自 iPod Touch 设备的 Worklight 6.1.0.2。在 worklight 服务器上,我们在 Stack Trace 中看到了这一点。

klight.console.controllers.UsersController from Application javax.ws.rs.core.Application
[10/8/14 15:20:04:170 CDT] 0000001c com.worklight.core.auth.impl.LoginContext                    E FWLSE0059E: Login into realm 'NullLoginModule' failed. Invalid gadget request format: /WorkExecution/iphone/my_custom_auth_request_urlnull. Unknown handler path: my_custom_auth_request_url. [project AnywhereWorkManagement]
com.worklight.gadgets.GadgetRuntimeException: Invalid gadget request format: /WorkExecution/iphone/my_custom_auth_request_urlnull. Unknown handler path: my_custom_auth_request_url
    at com.worklight.gadgets.api.GadgetAP

我们的质询处理程序使用此 Javascript 调用提交我们的身份验证信息:

challengeHandler.submitLoginForm(challengeHandler.getAuthURL(), loginOptions, l

其中 getAuthURL 返回字符串“/my_custom_auth_request”。

奇怪的是,使用相同应用程序和工作灯服务器的其他设备被允许成功登录。另一个奇怪的数据点是,如果我们在这个 iPod Touch 设备上弹出 Worklight 设置面板,并更新 Worklight 服务器信息,那么 Worklight 登录似乎成功了。

来自失败连接的 Wireshark 日志:

POST /AnywhereWorkManagement/apps/services/api/WorkExecution/iphone/login HTTP/1.1
Host: mobilenext1.tivlab.austin.ibm.com
Accept-Language: en_US
User-Agent: Mozilla/5.0 (iPod touch; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257 (367413328)/Worklight/6.1.0.02.20141006-1624
Content-Length: 71
x-wl-platform-version: 6.1.0.02.20141006-1624
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
x-wl-app-version: 7.5.1.1
Accept: text/javascript, text/html, application/xml, text/xml, */*
Connection: keep-alive
x-wl-native-version: 1475155033
x-wl-device-id: 36CDA8F2-F4E9-49D8-8CBB-A250FDC3B8FA
Cookie: WL_PERSISTENT_COOKIE=ac72a920-b614-423d-8347-e4b5c96a4a1b
Origin: file://
Accept-Encoding: gzip, deflate

realm=CustomAuthenticationRealm&isAjaxRequest=true&x=0.7606244247872382HTTP/1.1 503 Service Unavailable
X-Powered-By: Servlet/3.0
P3P: policyref="/w3c/p3p.xml", CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
Content-Language: en-US
Content-Length: 0
Connection: Close
Date: Fri, 10 Oct 2014 14:32:15 GMT

然后在更新自定义 URL 以删除尾部斜杠并重新登录后,这是成功登录的 wireshark 日志:

POST /AnywhereWorkManagement/apps/services/api/WorkExecution/iphone/query HTTP/1.1
Host: mobilenext1.tivlab.austin.ibm.com
Accept-Language: en_US
User-Agent: Mozilla/5.0 (iPod touch; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257 (384405120)/Worklight/6.1.0.02.20141006-1624
Accept-Encoding: gzip, deflate
Content-Length: 210
x-wl-platform-version: 6.1.0.02.20141006-1624
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
x-wl-app-version: 7.5.1.1
Accept: text/javascript, text/html, application/xml, text/xml, */*
Connection: keep-alive
x-wl-native-version: 1475155033
x-wl-device-id: 36CDA8F2-F4E9-49D8-8CBB-A250FDC3B8FA
Cookie: WL_PERSISTENT_COOKIE=0983cfc8-8526-48c9-99cb-72659cb934b4; JSESSIONID=0000wSxsNgF79M62_UJTNmXKKYC:2e8ee48e-dec4-4c69-b8b4-ad37f839f1be
Origin: file://
WL-Instance-Id: okur33g93p35c9j7rvpk1r9g5j

adapter=OSLCGenericAdapter&procedure=getProperties&compressResponse&parameters=%5B%7B%22propertyNames%22%3A%5B%22si.auth.type%22%5D%7D%5D&__wl_deviceCtx=Ar1Cjm4_mo9jpBAA&isAjaxRequest=true&x=0.33572526928037405HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0
P3P: policyref="/w3c/p3p.xml", CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
Content-Type: application/json; charset=UTF-8
Cache-Control: no-cache, no-store, must-revalidate
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Content-Length: 93
Date: Fri, 10 Oct 2014 14:43:15 GMT





 /*-secure-
    {"isSuccessful":true,"responseID":"1516","properties":{"si.auth.type":"maximo"}}*/POST /AnywhereWorkManagement/apps/services/api/WorkExecution/iphone/my_custom_auth_request_url HTTP/1.1
    Host: mobilenext1.tivlab.austin.ibm.com
    Accept-Language: en_US
    User-Agent: Mozilla/5.0 (iPod touch; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257 (384405120)/Worklight/6.1.0.02.20141006-1624
    X-Requested-With: XMLHttpRequest
    Accept: text/javascript, text/html, application/xml, text/xml, */*
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    x-wl-app-version: 7.5.1.1
    Connection: keep-alive
    Cookie: WL_PERSISTENT_COOKIE=0983cfc8-8526-48c9-99cb-72659cb934b4; JSESSIONID=0000wSxsNgF79M62_UJTNmXKKYC:2e8ee48e-dec4-4c69-b8b4-ad37f839f1be
    x-wl-device-id: 36CDA8F2-F4E9-49D8-8CBB-A250FDC3B8FA
    Content-Length: 62
    Origin: file://
    Accept-Encoding: gzip, deflate

    username=wilson&password=wilson&authType=maximo&langcode=en-USHTTP/1.1 200 OK
    X-Powered-By: Servlet/3.0
    P3P: policyref="/w3c/p3p.xml", CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
    Content-Type: application/json; charset=UTF-8
    Cache-Control: no-cache, must-revalidate
    Content-Language: en-US
    Transfer-Encoding: chunked
    Date: Fri, 10 Oct 2014 14:43:15 GMT

    19
    {"authStatus":"complete"}
    0

我在服务器日志中发现这与来自 worklight 服务器的 503 错误相对应(我可以通过发布相同的登录 URL 来重现)。但是,在我们的 Worklight Console 中,每个应用程序只列出了一个适用于 iphone 的版本。

 [10/10/14 10:37:54:063 CDT] 00000485 com.worklight.gadgets.serving.GadgetAPIServlet               E FWLSE0020E: Ajax request exception: The environment 'iphone' supports multiple versions, therefore you must request it with a version parameter. [project AnywhereWorkManagement]
[10/10/14 10:37:54:066 CDT] 00000485 com.worklight.gadgets.serving.GadgetAPIServlet               E FWLSE0117E: Error code: 1, error description: INTERNAL_ERROR, error message: FWLSE0069E: An internal error occurred during gadget request  [project AnywhereWorkManagement]The environment 'iphone' supports multiple versions, therefore you must request it with a version parameter., User Identity {wl_authenticityRealm=null, CustomAuthenticationRealm=null, wl_remoteDisableRealm=null, wl_antiXSRFRealm=null, wl_deviceAutoProvisioningRealm=null, wl_deviceNoProvisioningRealm=null, wl_anonymousUserRealm=null}. [project AnywhereWorkManagement] 

【问题讨论】:

  • Scott,请提及 Worklight 版本及其内部版本号。
  • Scott,我也不相信这个斜线是罪魁祸首。该斜杠是 Worklight 在构建期间需要并添加的,因为在它之后 URL 实际上会继续,即:domain:10080/servercontext/services/../.../init -- 请生成一个成功连接的 Wireshark 日志和另一个来自不成功连接的日志。
  • 1) 从什么到什么,您是否在设置屏幕中更改服务器 URL? 2)wireshark日志,是连接成功还是连接失败...
  • 1.) 从 https:///AnywhereWorkManagement/ 到 https:///AnywhereWorkManagement(没有尾部斜杠)和 2) 我现在添加了两个日志。请注意,成功的连接 wireshark.log 根本没有显式调用 Worklight 登录 URL。也许更改尾部斜杠会强制工作灯登录提前完成或其他什么?
  • 哪些设备失败,哪些成功?此类更改应影响所有设备,而不是部分设备。

标签: ibm-mobilefirst


【解决方案1】:

斯科特,

解决方法是从服务器 URL 中删除尾部斜杠。

对于永久修复,我建议您打开 PMR,以便开发团队可以仔细调查该问题。
这样做时,请提供一个可重现的测试用例,因为流程确实可以正常工作,但似乎不适用于您的流程,因此需要更好地了解它到底在哪里失败。请务必在说明中提供此问题。

可能是您在质询处理程序中的某处更改了 URL?

【讨论】:

  • 我不认为我们正在更改挑战处理程序中的 url。在调用 submitLoginForm 方法之前,我可以在日志中看到正确的 URL。我认为如果没有提前成功登录 Worklight,submitLoginForm 会在命令行中显示 Null 失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
相关资源
最近更新 更多