我们有一个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 Native API条目中。
在我们设置的原生iOS应用/项目中:
当我们想要连接到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。同样的结果,只是我们可以看到在 isCustomResponse 方法中打印的错误响应,如果我们有ChallengeHandler。
此外,会自动显示一个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中,当我们将它用于部署到Tomcat上的Consumer Server的Studio 6.0.0生成的iOSApi Environment时,它似乎没有显示相同的错误。
现在我们得到了一个:
Invocation Failure: Status: 403
InvocationResult: {
"WL-Authentication-Failure" = {
"wl_authenticityRealm" = {
reason = "forbidden state";
};
};
}
当我们有Enabled, blocking
时,我们可以在更改为Enabled, servicing
时连接并调用适配器。 (之前的5.0.6错误是不可能的)
现在我们假设我们需要以某种方式设置我们用于在Wl服务器上为iOS模拟器和iOS设备(开发人员和分发证书)签署应用程序的iOS证书或签名,以便WL服务器允许连接?
有人可以帮助我们完成在XCode 5项目中设置iOS本机应用程序真实性以成功连接到服务器所需的步骤,然后使用Enabled, blocking
调用我们的适配器。
我们确实将 worklight.group 添加到iOS应用的已打开的 Keychain Sharing 功能中。
我们将包含带有 wlUid 的plist文件的所有Wl iOSAPI文件复制到iOS应用xCode5项目中?
如上所述,它适用于Enabled-Servicing和Disabled AppAuthenticity。
答案 0 :(得分:0)
对于使用适用于iOS的Worklight Native API在本机iOS应用程序中运行的应用程序真实性,步骤与Eclipse端的混合应用程序中的步骤相同:
authenticationConfig.xml
application-descriptor.xml
application-descriptor.xml
然而,在Xcode中还有一个额外的步骤 打开生成的Xcode项目后:
-ObjC
现在您可以在iOS模拟器/设备上清理和/或运行项目。应该工作。