IBM Worklight – 如何在本机iOS应用程序中启用应用程序真实性?
我们有一个iOS和Android混合应用程序环境,我们已经成功运行了应用程序真实性(使用下拉菜单控制function):
<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条目处启用App Authenticityfunction(可以下拉以控制function)在控制台。
在我们设置的本机iOS应用/项目上:
- bundle ID与混合项目中的完全相同,与Apple Developer门户中的一样
- Key Chain在项目中启用,也设置为worklight.group (如混合XCode项目中)
当我们想要连接到WL服务器时,我们无法获得成功的身份validation。 我们看到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
为我们的应用程序名称(或其他)时,我们得到一个响应Response text:
{"errorCode":"UNEXPECTED_ERROR","errorMsg":null}
所以我认为这个价值iOSnative是一个固定的价值,必须在那里?
9月30日:WL 6.0.0.1更新
在WL 6.0.0.1中,当我们将一个Studio 6.0.0生成的iOSApi环境部署到Tomcat上的Consumer Server时,似乎没有显示相同的错误。
现在我们得到一个:
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应用程序的开启的钥匙串共享function。
-
我们将包含plist文件的所有Wl iOSAPI文件与wlUid复制到iOS应用程序xCode5项目中?
-
如上所述,它适用于Enabled-Servicing并且禁用了AppAuthenticity。
要使用适用于iOS的Worklight Native API在本机iOS应用程序中运行应用程序真实性,其步骤与Eclipse端的混合应用程序中的步骤相同:
- 在
authenticationConfig.xml
设置securityTest - 将securityTest添加到iPhone环境
application-descriptor.xml
- 将你的bundleId添加到
application-descriptor.xml
的iPhone环境中
然而,在Xcode中还有一个额外的步骤。
一旦你打开生成的Xcode项目:
- 在“构build设置”>“链接”>“其他链接器标志”下
- 添加标志
-ObjC
现在,您可以在iOS模拟器/设备上清理和/或运行项目。 应该pipe用。
- 由于缺lessinfo.plist和其他文件,OS X,iPhone和Android上的Worklight构build失败
- IBM Worklight – 无法使用现有别名注册到事件源callback。 别名已经被用于事件源
- 在iOS上进行IP更改后,直接更新自定义url不起作用
- 升级到iOS 9和MobileFirst 7.1后无法在设备或模拟器上login应用程序
- 无法login到iOS实际的Device MobileFirst Project上的应用程序
- IBM Worklight – iOS 7状态栏与应用程序的HTML重叠
- 尝试将设备注册到Bluemix上的IBM Mobile First Push服务时,iOS应用程序崩溃
- IBM Worklight v6.1.0.1:在Worklight上使用Ionic Framework并在IOS环境中运行时出错
- IBM MobileFirst APNS通知需要1-courier.push.apple.com吗? 这是为了什么?