服务器上的“真实性检查失败”错误

时间:2013-04-09 09:58:49

标签: android authentication ibm-mobilefirst

我将部署在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中定义了realms,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>

1 个答案:

答案 0 :(得分:0)

确保<testAppAuthenticity/>是自定义安全测试的一部分。

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

  1. 在application-descriptor.xml中指定公共签名密钥(使用Android环境的上下文菜单中的“提取公共签名密钥”添加它)
  2. 使用与上面生成公共签名密钥相同的密钥库,签名并导出您的.apk(我假设我们在这里谈论Android)
  3. 请注意,这仅适用于存在真实性功能的Worklight的消费者版或企业版。如果不是这种情况,我建议删除此securityTest。