/*
* 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.action;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.xdi.oxauth.client.TokenClient;
import org.xdi.oxauth.client.TokenRequest;
import org.xdi.oxauth.client.TokenResponse;
import org.xdi.oxauth.model.common.AuthenticationMethod;
import org.xdi.oxauth.model.common.GrantType;
/**
* @author Javier Rojas Blum Date: 02.21.2012
*/
@Named
@SessionScoped
public class TokenAction implements Serializable {
private static final long serialVersionUID = -1049039555549738261L;
@Inject
private Logger log;
@Inject
private UserInfoAction userInfoAction;
private String tokenEndpoint;
private GrantType grantType;
private String clientId;
private String clientSecret;
private String code;
private String redirectUri;
private String username;
private String password;
private String scope;
private String assertion;
private String refreshToken;
private boolean showResults;
private String requestString;
private String responseString;
private AuthenticationMethod authenticationMethod;
public void exec() {
try {
TokenRequest request = new TokenRequest(grantType);
request.setAuthUsername(clientId);
request.setAuthPassword(clientSecret);
request.setCode(code);
request.setRedirectUri(redirectUri);
request.setUsername(username);
request.setPassword(password);
request.setScope(scope);
request.setAssertion(assertion);
request.setRefreshToken(refreshToken);
request.setAuthenticationMethod(authenticationMethod);
if (authenticationMethod.equals(AuthenticationMethod.CLIENT_SECRET_JWT)) {
request.setAudience(tokenEndpoint);
}
TokenClient client = new TokenClient(tokenEndpoint);
client.setRequest(request);
TokenResponse response = client.exec();
if (response.getStatus() == 200) {
userInfoAction.setAccessToken(response.getAccessToken());
}
showResults = true;
requestString = client.getRequestAsString();
responseString = client.getResponseAsString();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
public String getTokenEndpoint() {
return tokenEndpoint;
}
public void setTokenEndpoint(String tokenEndpoint) {
this.tokenEndpoint = tokenEndpoint;
}
public GrantType getGrantType() {
return grantType;
}
public void setGrantType(GrantType grantType) {
this.grantType = grantType;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(String clientSecret) {
this.clientSecret = clientSecret;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getRedirectUri() {
return redirectUri;
}
public void setRedirectUri(String redirectUri) {
this.redirectUri = redirectUri;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getAssertion() {
return assertion;
}
public void setAssertion(String assertion) {
this.assertion = assertion;
}
public String getRefreshToken() {
return refreshToken;
}
public void setRefreshToken(String refreshToken) {
this.refreshToken = refreshToken;
}
public boolean isShowResults() {
return showResults;
}
public void setShowResults(boolean showResults) {
this.showResults = showResults;
}
public String getRequestString() {
return requestString;
}
public void setRequestString(String requestString) {
this.requestString = requestString;
}
public String getResponseString() {
return responseString;
}
public void setResponseString(String responseString) {
this.responseString = responseString;
}
public AuthenticationMethod getAuthenticationMethod() {
return authenticationMethod;
}
public void setAuthenticationMethod(AuthenticationMethod authenticationMethod) {
this.authenticationMethod = authenticationMethod;
}
}