Skip to content

Commit

Permalink
Add logic to process login_hint on /login direct calls
Browse files Browse the repository at this point in the history
[#162810381] https://www.pivotaltracker.com/story/show/162810381

Signed-off-by: Torsten Luh <torsten.luh@sap.com>
  • Loading branch information
tack-sap authored and torsten-sap committed Feb 7, 2019
1 parent af30d0f commit 693612a
Showing 1 changed file with 8 additions and 7 deletions.
Expand Up @@ -95,7 +95,6 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Expand Down Expand Up @@ -360,7 +359,7 @@ private String login(Model model, Principal principal, List<String> excludedProm

Map.Entry<String, AbstractIdentityProviderDefinition> idpForRedirect = null;
idpForRedirect = evaluateLoginHint(model, session, samlIdentityProviders,
oauthIdentityProviders, allIdentityProviders, allowedIdentityProviderKeys);
oauthIdentityProviders, allIdentityProviders, allowedIdentityProviderKeys, request);

boolean discoveryEnabled = IdentityZoneHolder.get().getConfig().isIdpDiscoveryEnabled();
boolean discoveryPerformed = Boolean.parseBoolean(request.getParameter("discoveryPerformed"));
Expand Down Expand Up @@ -534,18 +533,20 @@ private Map.Entry<String, AbstractIdentityProviderDefinition> evaluateLoginHint(
Map<String, SamlIdentityProviderDefinition> samlIdentityProviders,
Map<String, AbstractXOAuthIdentityProviderDefinition> oauthIdentityProviders,
Map<String, AbstractIdentityProviderDefinition> allIdentityProviders,
List<String> allowedIdentityProviderKeys
List<String> allowedIdentityProviderKeys,
HttpServletRequest request
) {

Map.Entry<String, AbstractIdentityProviderDefinition> idpForRedirect = null;
Optional<String> loginHintParam =
String loginHintParam =
ofNullable(session)
.flatMap(s -> ofNullable((SavedRequest) s.getAttribute(SAVED_REQUEST_SESSION_ATTRIBUTE)))
.flatMap(sr -> ofNullable(sr.getParameterValues("login_hint")))
.flatMap(lhValues -> Arrays.asList(lhValues).stream().findFirst());
.flatMap(lhValues -> Arrays.asList(lhValues).stream().findFirst())
.orElse(request.getParameter("login_hint"));

if (loginHintParam.isPresent()) {
String loginHint = loginHintParam.get();
if (loginHintParam != null) {
String loginHint = loginHintParam;
// parse login_hint in JSON format
UaaLoginHint uaaLoginHint = UaaLoginHint.parseRequestParameter(loginHint);
if (uaaLoginHint != null) {
Expand Down

0 comments on commit 693612a

Please sign in to comment.