Package com.sissi.pipeline.in.auth.impl

Source Code of com.sissi.pipeline.in.auth.impl.DigestAuthProcessor

package com.sissi.pipeline.in.auth.impl;

import javax.security.sasl.SaslServer;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.sissi.commons.Trace;
import com.sissi.context.JIDContext;
import com.sissi.pipeline.Input;
import com.sissi.pipeline.in.ProxyProcessor;
import com.sissi.pipeline.in.auth.SaslServers;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.iq.auth.Response;
import com.sissi.protocol.iq.auth.Success;

/**
* @author kim 2013年11月26日
*/
public class DigestAuthProcessor extends ProxyProcessor {

  private final Log log = LogFactory.getLog(this.getClass());

  private final SaslServers saslServers;

  private final Input proxy;

  public DigestAuthProcessor(SaslServers saslServers, Input proxy) {
    super();
    this.saslServers = saslServers;
    this.proxy = proxy;
  }

  @Override
  public boolean input(JIDContext context, Protocol protocol) {
    try {
      SaslServer sasl = null;
      try {
        return (sasl = this.saslServers.pull(context)) != null ? context.write(new Success(sasl.evaluateResponse(protocol.cast(Response.class).getResponse()))).auth(true).auth() : false;
      } finally {
        if (sasl != null) {
          sasl.dispose();
        }
      }
    } catch (Exception e) {
      this.log.debug(e.toString());
      Trace.trace(this.log, e);
      return this.proxy.input(context, protocol);
    }
  }
}
TOP

Related Classes of com.sissi.pipeline.in.auth.impl.DigestAuthProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.