106 HttpServletRequest request = (HttpServletRequest) req;
107 HttpServletResponse response = (HttpServletResponse) res;
108 HttpSession session = request.getSession();
112 chain.doFilter(req, res);
118 AuthorizationRequest authRequest = null;
120 ClientDetailsEntity client = null;
123 if (!Strings.isNullOrEmpty(authRequest.getClientId())) {
130 if (!Strings.isNullOrEmpty(loginHint)) {
131 session.setAttribute(LOGIN_HINT, loginHint);
133 session.removeAttribute(LOGIN_HINT);
136 if (authRequest.getExtensions().get(PROMPT) != null) {
138 String prompt = (String)authRequest.getExtensions().get(PROMPT);
139 List<String> prompts = Splitter.on(PROMPT_SEPARATOR).splitToList(Strings.nullToEmpty(prompt));
141 if (prompts.contains(PROMPT_NONE)) {
143 Authentication auth = SecurityContextHolder.getContext().getAuthentication();
148 chain.doFilter(req, res);
150 logger.info(
"Client requested no prompt");
152 if (client != null && authRequest.getRedirectUri() != null) {
156 String url =
redirectResolver.resolveRedirect(authRequest.getRedirectUri(), client);
159 URIBuilder uriBuilder =
new URIBuilder(url);
161 uriBuilder.addParameter(ERROR, LOGIN_REQUIRED);
162 if (!Strings.isNullOrEmpty(authRequest.getState())) {
163 uriBuilder.addParameter(STATE, authRequest.getState());
166 response.sendRedirect(uriBuilder.toString());
169 }
catch (URISyntaxException e) {
170 logger.error(
"Can't build redirect URI for prompt=none, sending error instead", e);
171 response.sendError(HttpServletResponse.SC_FORBIDDEN,
"Access Denied");
176 response.sendError(HttpServletResponse.SC_FORBIDDEN,
"Access Denied");
179 }
else if (prompts.contains(PROMPT_LOGIN)) {
182 if (session.getAttribute(
PROMPTED) == null) {
188 Authentication auth = SecurityContextHolder.getContext().getAuthentication();
192 SecurityContextHolder.getContext().setAuthentication(null);
193 chain.doFilter(req, res);
196 chain.doFilter(req, res);
203 chain.doFilter(req, res);
207 chain.doFilter(req, res);
210 }
else if (authRequest.getExtensions().get(MAX_AGE) != null ||
211 (client != null && client.getDefaultMaxAge() != null)) {
214 Integer max = (client != null ? client.getDefaultMaxAge() : null);
215 String maxAge = (String) authRequest.getExtensions().get(MAX_AGE);
216 if (maxAge != null) {
217 max = Integer.parseInt(maxAge);
222 Date authTime = (Date) session.getAttribute(AuthenticationTimeStamper.AUTH_TIMESTAMP);
224 Date now =
new Date();
225 if (authTime != null) {
226 long seconds = (now.getTime() - authTime.getTime()) / 1000;
229 SecurityContextHolder.getContext().setAuthentication(null);
233 chain.doFilter(req, res);
236 chain.doFilter(req, res);
239 }
catch (InvalidClientException e) {
241 chain.doFilter(req, res);
RedirectResolver redirectResolver
Definition: AuthorizationRequestFilter.java:93
Map< String, String > createRequestMap(Map< String, String[]> parameterMap)
Definition: AuthorizationRequestFilter.java:249
static final Logger logger
Definition: AuthorizationRequestFilter.java:81
String extractHint(String loginHint)
static final String PROMPT_REQUESTED
Definition: AuthorizationRequestFilter.java:84
static final String PROMPTED
Definition: AuthorizationRequestFilter.java:83
RequestMatcher requestMatcher
Definition: AuthorizationRequestFilter.java:98
LoginHintExtracter loginHintExtracter
Definition: AuthorizationRequestFilter.java:96
ClientDetailsEntity loadClientByClientId(String clientId)
ClientDetailsEntityService clientService
Definition: AuthorizationRequestFilter.java:90
OAuth2RequestFactory authRequestFactory
Definition: AuthorizationRequestFilter.java:87