0

我将部署在 5.0.0.3 worklight 服务器上的 5.0.0.3 worklight 应用程序迁移到 Worklight studio 5.0.6,并在 IPAS 上完成部署。

在 IPAS 上部署成功,我现在尝试从平板电脑执行我的 android 应用程序。

我对身份验证有一些问题:

在 Application Descriptor 中,我使用 securityTest 保护了 application-descriptor.xml 中的 android 应用程序。

我在 authenticationConfig.xml 中定义了领域、securityTest 和 loginModules。我使用 FormBasedAuthenticator 和 NonValidatingLoginModule。

除了我执行challengeHandler.submitSuccess() 之外,所有这些都适用于我的challengeHandler。在这里,在服务器控制台上出现以下错误:

com.worklight.core.auth.ext.AuthenticityLoginModule login FWLSE0127E: 真实性检查失败。


我使用的 SecurityTest 是:CustomerCentricClientApp-strong-mobile-securityTest。这是我的 AuthenticationConfig.xml 文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<securityTests>
    <webSecurityTest name="CustomerCentricClientApp-web-securityTest">
        <testUser realm="PushClientAppRealm"/>
    </webSecurityTest>

    <mobileSecurityTest name="CustomerCentricClientApp-strong-mobile-securityTest">
        <testAppAuthenticity/> 
        <testUser realm="PushClientAppRealm"/>
        <testDeviceId provisioningType="none"/>
    </mobileSecurityTest>
</securityTests>

<realms>        
    <realm loginModule="PushAppClientLoginModule" name="PushClientAppRealm">
        <className>com.worklight.core.auth.ext.FormBasedAuthenticator</className>
    </realm>

    <realm loginModule="requireLogin" name="WorklightConsole">
        <className>com.worklight.core.auth.ext.FormBasedAuthenticator</className>
        <onLoginUrl>/console</onLoginUrl>
    </realm>
</realms>

<loginModules>
    <loginModule name="PushAppClientLoginModule">
        <className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
    </loginModule>

    <loginModule name="requireLogin">
        <className>com.worklight.core.auth.ext.SingleIdentityLoginModule</className>
    </loginModule>
</loginModules>


这是我的应用程序描述符的摘录:

<android securityTest="CustomerCentricClientApp-strong-mobile-securityTest" version="1.0">
    <worklightSettings include="true"/>
    <pushSender key="xxx" senderId="xx"/>
    <security>
        <encryptWebResources enabled="false"/>
        <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
        <publicSigningKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsW8rocRoAK0PElY5DpyN0wkg2CAVA7Ub8KSFDjBwofoWiA7AAD1hlcJJPCRznfFQ8nQEQ7jJAhpuOvmKxvVcRfj7shJ3JZP0yAvh0Lte8DSQ0MASXwfyehmJe9l/KiY5KWM6sDk+4oxcDJ2j2U+mBivR9+msdTaqIOFPP+PBteQIDAQAB</publicSigningKey>
    </security>
</android>
4

1 回答 1

0

确保<testAppAuthenticity/>是您的自定义 securityTest 的一部分。

除了添加上面的真实性测试之外,您还需要:

  1. 在 application-descriptor.xml 中指定一个公共签名密钥(使用 Android 环境上下文菜单中的“提取公共签名密钥”添加它)
  2. 使用用于生成上述公共签名密钥的相同密钥库签名并导出您的 .apk(我假设我们在这里讨论的是 Android)

请注意,这仅与存在真实性功能的 Worklight 的消费者版或企业版相关。如果这不是你的情况,我建议删除这个 securityTest。

于 2013-04-09T10:07:07.460 回答