added token endpoint options to client filter, closes #803

pull/803/merge
Justin Richer 2015-05-13 16:53:35 -04:00
parent e52fff58f5
commit da72ce02ad
3 changed files with 44 additions and 3 deletions

View File

@ -304,6 +304,7 @@ public class OIDCAuthenticationFilter extends AbstractAuthenticationProcessingFi
MultiValueMap<String, String> form = new LinkedMultiValueMap<String, String>(); MultiValueMap<String, String> form = new LinkedMultiValueMap<String, String>();
form.add("grant_type", "authorization_code"); form.add("grant_type", "authorization_code");
form.add("code", authorizationCode); form.add("code", authorizationCode);
form.setAll(authOptions.getTokenOptions(serverConfig, clientConfig, request));
String redirectUri = getStoredSessionString(session, REDIRECT_URI_SESION_VARIABLE); String redirectUri = getStoredSessionString(session, REDIRECT_URI_SESION_VARIABLE);
if (redirectUri != null) { if (redirectUri != null) {

View File

@ -28,7 +28,8 @@ import org.mitre.openid.connect.config.ServerConfiguration;
/** /**
* *
* This service provides any extra options that need to be passed to the authentication request. * This service provides any extra options that need to be passed to the authentication request,
* either through the authorization endpoint (getOptions) or the token endpoint (getTokenOptions).
* These options may depend on the server configuration, client configuration, or HTTP request. * These options may depend on the server configuration, client configuration, or HTTP request.
* *
* @author jricher * @author jricher
@ -36,6 +37,24 @@ import org.mitre.openid.connect.config.ServerConfiguration;
*/ */
public interface AuthRequestOptionsService { public interface AuthRequestOptionsService {
/**
* The set of options needed at the authorization endpoint.
*
* @param server
* @param client
* @param request
* @return
*/
public Map<String, String> getOptions(ServerConfiguration server, RegisteredClient client, HttpServletRequest request); public Map<String, String> getOptions(ServerConfiguration server, RegisteredClient client, HttpServletRequest request);
/**
* The set of options needed at the token endpoint.
*
* @param server
* @param client
* @param request
* @return
*/
public Map<String, String> getTokenOptions(ServerConfiguration server, RegisteredClient client, HttpServletRequest request);
} }

View File

@ -37,7 +37,8 @@ import org.mitre.openid.connect.config.ServerConfiguration;
*/ */
public class StaticAuthRequestOptionsService implements AuthRequestOptionsService { public class StaticAuthRequestOptionsService implements AuthRequestOptionsService {
private Map<String, String> options = new HashMap<String, String>(); private Map<String, String> options = new HashMap<>();
private Map<String, String> tokenOptions = new HashMap<>();
/* (non-Javadoc) /* (non-Javadoc)
* @see org.mitre.openid.connect.client.service.AuthRequestOptionsService#getOptions(org.mitre.openid.connect.config.ServerConfiguration, org.mitre.oauth2.model.RegisteredClient, javax.servlet.http.HttpServletRequest) * @see org.mitre.openid.connect.client.service.AuthRequestOptionsService#getOptions(org.mitre.openid.connect.config.ServerConfiguration, org.mitre.oauth2.model.RegisteredClient, javax.servlet.http.HttpServletRequest)
@ -47,8 +48,16 @@ public class StaticAuthRequestOptionsService implements AuthRequestOptionsServic
return options; return options;
} }
/* (non-Javadoc)
* @see org.mitre.openid.connect.client.service.AuthRequestOptionsService#getTokenOptions(org.mitre.openid.connect.config.ServerConfiguration, org.mitre.oauth2.model.RegisteredClient, javax.servlet.http.HttpServletRequest)
*/
@Override
public Map<String, String> getTokenOptions(ServerConfiguration server, RegisteredClient client, HttpServletRequest request) {
return tokenOptions;
}
/** /**
* @return the options * @return the options object directly
*/ */
public Map<String, String> getOptions() { public Map<String, String> getOptions() {
return options; return options;
@ -61,6 +70,18 @@ public class StaticAuthRequestOptionsService implements AuthRequestOptionsServic
this.options = options; this.options = options;
} }
/**
* @return the tokenOptions
*/
public Map<String, String> getTokenOptions() {
return tokenOptions;
}
/**
* @param tokenOptions the tokenOptions to set
*/
public void setTokenOptions(Map<String, String> tokenOptions) {
this.tokenOptions = tokenOptions;
}
} }