/* * ****************************************************************************** * Cloud Foundry * Copyright (c) [2009-2016] Pivotal Software, Inc. All Rights Reserved. * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product includes a number of subcomponents with * separate copyright notices and license terms. Your use of these * subcomponents is subject to the terms and conditions of the * subcomponent's license, as noted in the LICENSE file. * ****************************************************************************** */ package org.cloudfoundry.identity.uaa.authentication; import org.flywaydb.core.internal.util.StringUtils; import org.springframework.http.MediaType; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.context.SecurityContextHolder; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Map; /** * Filter which processes and authenticates a client based on * parameters client_id and client_secret * It sets the authentication to a client only * Oauth2Authentication object as that is expected by * the LoginAuthenticationManager. * */ public class ClientParametersAuthenticationFilter extends AbstractClientParametersAuthenticationFilter { @Override public void wrapClientCredentialLogin(HttpServletRequest req, HttpServletResponse res, Map<String, String> loginInfo, String clientId) throws IOException, ServletException { if (!StringUtils.hasText(req.getHeader("Authorization")) && isUrlEncodedForm(req)) { doClientCredentialLogin(req, loginInfo, clientId); } } private boolean isUrlEncodedForm(HttpServletRequest req) { boolean isUrlEncodedForm = false; if (req.getHeader("Content-Type") != null) { isUrlEncodedForm = req.getHeader("Content-Type").startsWith(MediaType.APPLICATION_FORM_URLENCODED_VALUE); } return isUrlEncodedForm; } }