/** * Copyright (C) 2009 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.portal.gadget.core; import java.io.File; import java.io.IOException; import org.apache.shindig.auth.BlobCrypterSecurityToken; import org.apache.shindig.common.crypto.BasicBlobCrypter; import org.apache.shindig.common.crypto.BlobCrypter; import org.apache.shindig.common.crypto.BlobCrypterException; import org.apache.shindig.common.util.TimeSource; import org.exoplatform.web.application.RequestContext; import org.gatein.common.logging.Logger; import org.gatein.common.logging.LoggerFactory; public class ExoDefaultSecurityTokenGenerator implements SecurityTokenGenerator { private final TimeSource timeSource; /** . */ private final Logger log = LoggerFactory.getLogger(ExoDefaultSecurityTokenGenerator.class); public ExoDefaultSecurityTokenGenerator() throws Exception { this.timeSource = new TimeSource(); } protected String createToken(String gadgetURL, String owner, String viewer, Long moduleId, String container) { try { BlobCrypter blobCrypter = getBlobCrypter(); BlobCrypterSecurityToken t = new BlobCrypterSecurityToken(blobCrypter, container, null); t.setAppUrl(gadgetURL); t.setModuleId(moduleId); t.setOwnerId(owner); t.setViewerId(viewer); t.setTrustedJson("trusted"); return t.encrypt(); } catch (IOException e) { log.error(e.getMessage(), e); } catch (BlobCrypterException e) { log.error(e.getMessage(), e); } return null; } public String createToken(String gadgetURL, Long moduleId) { RequestContext context = RequestContext.getCurrentInstance(); // context.get String rUser = context.getRemoteUser(); String viewer = rUser; return createToken(gadgetURL, viewer, rUser, moduleId, "default"); } protected BlobCrypter getBlobCrypter() throws IOException { String fileName = getKeyFilePath(); BasicBlobCrypter c = new BasicBlobCrypter(new File(fileName)); c.timeSource = timeSource; return c; } /** * Method returns a path to the file containing the encryption key */ protected String getKeyFilePath() { String keyPath = ExoContainerConfig.getTokenKeyPath(); File keyFile = null; if (keyPath != null) { keyFile = new File(keyPath); } else { keyFile = new File("key.txt"); } return keyFile.getAbsolutePath(); } }