簡體   English   中英

IBM Worklight-如何在本機iOS應用程序中啟用應用程序真實性?

[英]IBM Worklight - How to enable App Authenticity in a native iOS app?

我們有一個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應用/項目中,我們設置:

  • 包ID與混合項目中的ID完全相同,並且與Apple Developer Portal中的ID相同
  • 在項目中啟用了“鑰匙鏈”,並且還將其設置為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”對話框,其中顯示“錯誤:處理來自應用程序的請求時遇到錯誤(關閉)”

我們可以看到在6.0中有worklight.plist值:

<key>wlUid</key>
<string>wY/mbnwKTDDYQUvuQCdSgg==</string>

5.0.6是否也有必要? 我們的plist文件沒有該文件。

當我們將worklight.plist文件中的環境值從iOSnative為我們的應用名稱(或其他名稱)時,我們得到一個響應Response文本:

{"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 Server允許連接?

有人可以幫助我們完成在XCode 5項目中設置iOS本機App Authenticity以成功連接到服務器所需的步驟,然后再通過Enabled, blocking調用適配器。

  • 我們確實將worklight.group添加到了iOS應用程序的啟用的鑰匙串共享功能中。

  • 我們將所有Wl iOSAPI文件(包括帶有wlUid的plist文件) 復制到了iOS應用程序xCode5項目中?

  • 如上所述,它可以與“啟用服務”和“禁用AppAuthenticity”功能一起使用。

為了使App Authenticity在使用適用於iOS的Worklight Native API的本機iOS應用程序中起作用,其步驟與Eclipse端的Hybrid應用程序中的步驟相同:

  • authenticationConfig.xml設置securityTest
  • 將securityTest添加到iPhone環境application-descriptor.xml
  • application-descriptor.xml中將bundleId添加到iPhone環境中

但是,在Xcode中還有1個額外的步驟要做。
打開生成的Xcode項目后:

  • 在構建設置>鏈接>其他鏈接器標志下
  • 添加標志-ObjC

現在,您可以在iOS Simulator /設備上清理和/或運行項目。 應該管用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM