Package org.springframework.security.oauth.config

Source Code of org.springframework.security.oauth.config.ConsumerDetailsFactoryBean

/*
* Copyright 2006-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package org.springframework.security.oauth.config;

import java.io.IOException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;

import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.ResourceLoader;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.oauth.common.signature.RSAKeySecret;
import org.springframework.security.oauth.common.signature.SharedConsumerSecretImpl;
import org.springframework.security.oauth.common.signature.SignatureSecret;
import org.springframework.security.oauth.provider.BaseConsumerDetails;
import org.springframework.security.oauth.provider.ConsumerDetails;

/**
* @author Dave Syer
*
*/
public class ConsumerDetailsFactoryBean implements FactoryBean<ConsumerDetails>, ResourceLoaderAware {

  private Object typeOfSecret;
  private BaseConsumerDetails consumer = new BaseConsumerDetails();
  private String secret;
  private ResourceLoader resourceLoader;
 
  public void setResourceLoader(ResourceLoader resourceLoader) {
    this.resourceLoader = resourceLoader;
  }
 
  public void setSecret(String secret) {
    this.secret = secret;
  }

  public void setConsumerKey(String consumerKey) {
    consumer.setConsumerKey(consumerKey);
  }

  public void setConsumerName(String consumerName) {
    consumer.setConsumerName(consumerName);
  }

  public void setSignatureSecret(SignatureSecret signatureSecret) {
    consumer.setSignatureSecret(signatureSecret);
  }

  public void setAuthorities(String authorities) {
    consumer.setAuthorities(AuthorityUtils.commaSeparatedStringToAuthorityList(authorities));
  }

  public void setResourceName(String resourceName) {
    consumer.setResourceName(resourceName);
  }

  public void setResourceDescription(String resourceDescription) {
    consumer.setResourceDescription(resourceDescription);
  }

  public void setRequiredToObtainAuthenticatedToken(boolean requiredToObtainAuthenticatedToken) {
    consumer.setRequiredToObtainAuthenticatedToken(requiredToObtainAuthenticatedToken);
  }

  public void setTypeOfSecret(Object typeOfSecret) {
    this.typeOfSecret = typeOfSecret;
  }

  public ConsumerDetails getObject() throws Exception {
    if ("rsa-cert".equals(typeOfSecret)) {
      try {
        Certificate cert = CertificateFactory.getInstance("X.509").generateCertificate(resourceLoader.getResource(secret).getInputStream());
        consumer.setSignatureSecret(new RSAKeySecret(cert.getPublicKey()));
      }
      catch (IOException e) {
        throw new BeanCreationException("RSA certificate not found at " + secret + ".",
            e);
      }
      catch (CertificateException e) {
        throw new BeanCreationException("Invalid RSA certificate at " + secret + ".", e);
      }
      catch (NullPointerException e) {
        throw new BeanCreationException("Could not load RSA certificate at " + secret + ".", e);
      }
    }
    else {
      consumer.setSignatureSecret(new SharedConsumerSecretImpl(secret));
    }
    return consumer;
  }

  public Class<?> getObjectType() {
    return BaseConsumerDetails.class;
  }

  public boolean isSingleton() {
    return true;
  }

}
TOP

Related Classes of org.springframework.security.oauth.config.ConsumerDetailsFactoryBean

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.