0

Worklight のアプリケーション認証性機能を実装してテストしようとしてきましたが、機能させることができませんでした。このサイトのすべての投稿と WL インフォメーション センターの情報を確認しましたが、うまくいきませんでした。誰かが私を助けてくれることを期待して、私が行ったことと、私が見ている結果の詳細な説明を提供しています.

環境: Windows 7 Enterprise にインストールされた Worklight Studio 5.0.5 Consumer エディション Windows 7 Enterprise にインストールされた Worklight Server 5.0.5 Consumer エディション

WL サーバーは、Worklight Server インストールによって提供される Websphere Application Server Liberty プロファイル内で実行されています。

WL サーバーは、インストール パッケージによって提供される derby データベースを使用しています。

実装手順:

  1. authenticationConfig.xml にセキュリティ テストを追加 (コメント解除)

    <mobileSecurityTest name="mobileTests"> 
        <testDeviceId provisioningType="none"/>
        <testAppAuthenticity/>
        <testUser realm="wl_anonymousUserRealm"/>
    </mobileSecurityTest>
    
  2. .war ファイルを再構築し、Worklight Server にデプロイしました。

  3. 「connectOnStartup : true」になるように initOptions.js を変更します。

  4. application-descriptor.xml を変更し、Android アプリケーションのセキュリティ テストを指定し、publicSigningKey を追加しました

    <android version="1.1" securityTest="mobileTests">
    <worklightSettings include="false"/>
    <security>
        <encryptWebResources enabled="false"/>
        <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
        <publicSigningKey>.......</publicSigningKey>
    </security>
    

  5. アプリケーションを再構築し、WL サーバーにデプロイしました。

  6. 署名済みの .apk ファイルを作成し、アプリケーション センターにアップロードします。

  7. アプリケーションを物理デバイス (Samsung Galaxy Tab 2、Android 4.1.1) にインストールします。

  8. アプリケーションを起動します。

WL コンソールまたは物理デバイスから「プレビュー」モードでアプリケーションを起動すると、同じエラーが表示されます。私が受け取っているエラーは次のとおりです。

{"errorCode":"UNEXPECTED_ERROR","errorMsg":"userIdentityForAPI が null です。アプリケーションの認証要件を確認してください (決して、onStartup、onDemand ではありません)。これらの設定は、デプロイされたアプリケーションと一致する必要があります"}

構成で見逃したものはありますか?

4

1 に答える 1

0

最新の Worklight Studio Consumer Edition プラグイン v6.0.0.1 を使用して、以下を実行しました。Android 環境の Worklight ベースのアプリで App Authenticity を使用することに成功しました。

  1. 新しい Worklight プロジェクトを作成しました
  2. Android環境を追加しました
  3. initOptions.js >connectOnStartup:true
  4. authenticationConfig.xml > mobileSecurityTest のコメントを外します。

    <mobileSecurityTest name="mobileTests">          
        <testAppAuthenticity/> 
        <testDeviceId provisioningType="none" />  
    </mobileSecurityTest>
    

    カスタム セキュリティ テストも使用できます。

    <customSecurityTest name="customTests">
              <test realm="wl_antiXSRFRealm" step="1"/>
              <test realm="wl_authenticityRealm" step="1"/>
              <test realm="wl_remoteDisableRealm" step="1"/>
              <test realm="wl_anonymousUserRealm" isInternalUserID="true" step="1"/>
          test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" step="2"/>
     </customSecurityTest>
    
  5. Google が提供するデフォルトの debug.keystore を使用しました(本番環境では、独自のキーストアを使用する必要があります)

  6. Android フォルダを右クリックしてこのキーストアを使用 > 公開署名キーを抽出 (application-descriptor.xml に自動追加)
  7. すべてをビルドしてデプロイ
  8. 生成された Android プロジェクトを右クリック > [Run As] > [Android Application] (実稼働環境では、生成された Android プロジェクトを右クリック > [Android Tools] > [Export Signed Application Package] > [Install the signed .apk] > [launch])

検証します:

  1. Worklight Console で App Authenticity ルールが「有効」に設定されている場合に、アプリが Worklight Server に接続できることを確認しました
  2. application-descriptor.xml の公開署名鍵を変更し、サーバーに再デプロイしました
  3. Worklight Console でApp Authenticity ルールが に設定されている場合、アプリが Worklight Server への接続に失敗するようになったことを確認しましたEnabled, blocking
  4. に設定されている場合、アプリが合格することを確認しましたEnabled, serving
  5. に設定されている場合、アプリが合格することを確認しましたDisabled

私のテストでは:

  • Worklight Server をデプロイする別のアプリケーション サーバーではなく、Windows 7 で Worklight Studio Consumer Edition を使用しました (Liberty アプリケーション サーバーが組み込まれています)。上記と同じ手順を実行している限り (小さな変更を加えて - .wlapp もデプロイする必要があります)、違いはわかりません...
  • キーストア部分が正しく取得されていることを確認してください。つまり、サーバーとアプリケーションで同じキーストアを使用します。
于 2013-11-05T09:00:15.387 に答える