【问题标题】:Memcached authentication failure in Java appJava 应用程序中的 Memcached 身份验证失败
【发布时间】:2013-04-21 17:00:37
【问题描述】:

我正忙于学习 Heroku 的 Java 的 Memcached 教程:https://devcenter.heroku.com/articles/memcache#using-spymemcached-with-spring

我已经通过自制软件安装了 Memcached,启动并运行它,添加了 Spymemcached 依赖项并将 XML 配置添加到我的应用程序上下文中。

问题是我对 MEMCACHE_USERNAME 和 MEMCACHE_PASSWORD 环境变量需要什么一无所知,因为当我的应用程序上下文在本地启动时出现以下身份验证失败:

2013-04-21 18:22:52.108 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2013-04-21 18:22:52.127 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@228ef305
2013-04-21 18:22:52.283 WARN net.spy.memcached.auth.AuthThread:  Authentication failed to localhost/127.0.0.1:11211
2013-04-21 18:22:52.398 WARN net.spy.memcached.auth.AuthThread:  Authentication failed to localhost/127.0.0.1:11211
2013-04-21 18:22:52.520 WARN net.spy.memcached.auth.AuthThread:  Authentication failed to localhost/127.0.0.1:11211 ...

提供用户名和密码的配置:

<bean id="plainCallbackHandler" class="net.spy.memcached.auth.PlainCallbackHandler">
   <constructor-arg index="0" value="${MEMCACHE_USERNAME}"/>
   <constructor-arg index="1" value="${MEMCACHE_PASSWORD}"/>
</bean>

我一定遗漏了一些相当明显的东西……有什么建议吗?

【问题讨论】:

    标签: java heroku memcached spymemcached


    【解决方案1】:

    如果您在本地运行应用程序,MEMCACHE_USERNAMEMEMCACHE_PASSWORD 都应该为空(除非您在安装期间设置它们)。如果您的配置不处理空值,您可以使用前缀 MEMCACHE_USERNAME= MEMCACHE_PASSWORD= the-command-to-run-your-app 运行您的应用。

    如果您使用 Memcache 插件在 Heroku 上运行,您将获得 MEMCACHE_USERNAMEMEMCACHE_PASSWORDMEMCACHE_SERVERS 等环境变量,这些变量会在您安装插件时自动设置。

    如果您自行托管 Memcached 服务器,则必须(或应该)设置您将在应用程序中配置的 SASL 用户名和密码。

    【讨论】:

    • 嗨本杰明 - 感谢您的回答。我尝试了您的建议并将 MEMCACHE_USERNAME 和 MEMCACHE_PASSWORD 设为空白,但没有成功。有没有办法查看凭据是什么,或者您认为我应该重新安装 Memcached 并重试?
    • 尝试运行telnet localhost 11211 来访问 Memcached telnet 接口。如果可以连接,请键入 versionstats 之类的命令以查看您是否有权访问。如果您收到响应,则意味着您的 Memcached 服务器正在运行并且没有身份验证 - 所以问题可能出在其他地方。
    • 好的,所以我设法通过 telnet 连接并成功运行了版本和统计信息。有什么想法可以解决问题吗?
    • 仅供参考,我确实通过自制软件重新安装了 Memcached,它从不要求我输入用户名或密码,但我仍然遇到身份验证失败...
    【解决方案2】:

    你好,我也遇到了类似的问题,因为我没有设置SASL用户名和密码,所以删除配置后,错误信息消失了。

    <bean name="defaultCache" class="com.google.code.ssm.CacheFactory">
        <property name="cacheName" value="default" />
        <property name="cacheClientFactory">
            <bean name="cacheClientFactory"
                class="com.google.code.ssm.providers.spymemcached.MemcacheClientFactoryImpl" />
        </property>
        <property name="addressProvider" ref="addressProvider" />
        <property name="configuration" ref="cacheFactoryConf" />
    </bean>
    
    <bean id="addressProvider" class="com.google.code.ssm.config.DefaultAddressProvider">
        <property name="address" value="${memcached.hosts}" />
    </bean>
    <bean id="cacheFactoryConf"
        class="com.google.code.ssm.providers.spymemcached.SpymemcachedConfiguration">
        <property name="consistentHashing" value="true" />
        <property name="useBinaryProtocol" value="true" />
        <property name="keyPrefixSeparator" value=".xxx." />
        <property name="useNameAsKeyPrefix" value="true" />
        <!-- 
        <property name="authDescriptor">
            <bean class="net.spy.memcached.auth.AuthDescriptor">
                <constructor-arg index="0">
                    <value>PLAIN</value>
                </constructor-arg>
                <constructor-arg index="1">
                    <bean class="net.spy.memcached.auth.PlainCallbackHandler">
                        <constructor-arg index="0">
                            <value>${memcached.username}</value>
                        </constructor-arg>
                        <constructor-arg index="1">
                            <value>${memcached.password}</value>
                        </constructor-arg>
                    </bean>
                </constructor-arg>
            </bean>
        </property>
        -->
    </bean>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-14
      • 2015-06-23
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 2018-01-24
      相关资源
      最近更新 更多