我们有一个 iOS 和 Android 混合应用程序环境,在其中我们成功运行了 App Authenticity(下拉菜单可用于控制该功能),使用:
<mobileSecurityTest name="app">
<testAppAuthenticity/>
<testUser realm="wl_anonymousUserRealm"/>
<testDeviceId provisioningType="none" />
</mobileSecurityTest>
我们在 Worklight 项目中添加了一个“iOS Native API”项目,用于在 XCode 5 中进行原生 iOS 客户端开发。我们成功地连接到 WL 服务器并调用不同适配器中的所有现有适配器过程。
对于这个原生 API 项目,我们现在也想启用 App Authenticity。当我们在本机 API 项目的应用程序描述符中使用与混合应用程序相同的MobileSecurityTest时,我们可以将其部署到我们的 WL 服务器,并在 iOS 本机 API 条目处启用应用程序真实性功能(可用于控制该功能的下拉菜单)在控制台中。
在本机 iOS 应用程序/项目上,我们设置:
- bundle ID 与混合项目中的完全相同,并且与 Apple Developer 门户中的相同
- 项目中启用了 Key Chain,并且还设置为worklight.group(如在混合 XCode 项目中)
当我们想要连接到 WL 服务器时,我们无法成功运行身份验证。我们看到DeviceAuthManager尝试从设备获取 UUID,但随后服务器返回错误响应:
2013-09-24 08:58:35.530 App[32535:c07] DeviceAuthManager:getWorklightUniqueDeviceId --> returning UUID from the keychain
2013-09-24 08:58:35.564 App[32535:c07]
isCustomResponse
2013-09-24 08:58:35.564 App[32535:c07] this is it: Status: 403
InvocationResult: (null)
InvocationContext: {
delegate = "<MyConnectionListener: 0x7d73ec0>";
}
Response text: /*-secure-
{"WL-Authentication-Failure":{"wl_authenticityRealm":{"reason":"com.ibm.json.java.JSONObject cannot be cast to java.lang.String"}}}*/
2013-09-24 08:58:35.564 App[32535:c07] [ERROR] Worklight: -[WLRequest requestFailed:]:309::Status code='403' error='(null)'
2013-09-24 08:58:35.565 App[32535:c07] [ERROR] Worklight: -[WLClient onInitRequestFailure:userInfo:]:410::
我们确实尝试过使用和不使用仅打印响应的已注册 ChallengeHandler。结果相同,只是如果我们有 ChallengeHandler ,我们可以在isCustomResponse方法中看到打印的错误响应。
此外,会自动显示一个 Worklight 对话框,显示“错误:处理来自应用程序的请求时遇到错误 (CLOSE)”。
我们可以看到在 6.0 中有 worklight.plist 值:
<key>wlUid</key>
<string>wY/mbnwKTDDYQUvuQCdSgg==</string>
这在 5.0.6 中也有必要吗?我们的 plist 文件没有那个。
当我们将 worklight.plist 文件中的环境值从更改iOSnative
为我们的应用程序名称(或其他名称)时,我们会得到一个响应响应文本:
{"errorCode":"UNEXPECTED_ERROR","errorMsg":null}
所以我假设这个值 iOSnative 是一个必须存在的固定值?
9 月 30 日:WL 6.0.0.1 更新
在 WL 6.0.0.1 中,当我们将它与 Studio 6.0.0 生成的 iOSApi 环境一起使用时,它似乎没有显示相同的错误,该环境部署到 Tomcat 上的消费者服务器。
现在我们得到一个:
Invocation Failure: Status: 403
InvocationResult: {
"WL-Authentication-Failure" = {
"wl_authenticityRealm" = {
reason = "forbidden state";
};
};
}
当我们有Enabled, blocking
并且当我们更改为 . 时我们可以连接和调用适配器Enabled, servicing
。(以前的 5.0.6 错误是不可能的)
现在我们假设我们需要以某种方式设置我们用于为 iOS 模拟器和 Wl 服务器上的 iOS 设备(开发者和分发证书)签署应用程序的 iOS 证书或签名,以便 WL 服务器允许连接?
有人可以帮助我们在我们的 XCode 5 项目中设置 iOS 原生 App Authenticity 以成功连接到服务器,然后使用Enabled, blocking
.
我们确实将worklight.group添加到iOS 应用程序的打开的钥匙串共享功能中。
我们将所有 Wl iOSAPI 文件(包括带有wlUid的 plist 文件)复制到 iOS 应用程序 xCode5 项目中?
如上所述,它适用于 Enabled-Servicing 和 Disabled AppAuthenticity。