/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2014, Gluu
*/
package org.xdi.oxauth.service.uma;
import java.util.Date;
import java.util.UUID;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.xdi.oxauth.model.common.AccessToken;
import org.xdi.oxauth.model.common.IAuthorizationGrant;
import org.xdi.oxauth.model.common.uma.UmaRPT;
import org.xdi.util.INumGenerator;
/**
* @author Yuriy Zabrovarnyy
* @version 0.9, 14/02/2013
*/
public abstract class AbstractRPTManager implements IRPTManager {
@Inject
private Logger log;
private static final String GAT_MARKER = "gat_";
public UmaRPT createRPT(IAuthorizationGrant grant, String amHost, String aat, boolean isGat) {
final AccessToken accessToken = (AccessToken) grant.getAccessToken(aat);
try {
String code = UUID.randomUUID().toString() + "/" + INumGenerator.generate(8);
if (isGat) {
code = GAT_MARKER + code;
}
return new UmaRPT(code, new Date(), accessToken.getExpirationDate(), grant.getUserId(), grant.getClientId(), amHost);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException("Failed to generate RPT, aat: " + aat, e);
}
}
public static boolean isGat(String rptCode) {
return rptCode.startsWith(GAT_MARKER);
}
}