@Test public void testDefaultProviderLdapWithAllowedOnlyOIDC() throws Exception { MockHttpServletRequest mockHttpServletRequest = getMockHttpServletRequest(); LoginInfoEndpoint endpoint = getEndpoint(); List<String> allowedProviders = Collections.singletonList("my-OIDC-idp1"); // mock Client service BaseClientDetails clientDetails = new BaseClientDetails(); clientDetails.setClientId("client-id"); clientDetails.addAdditionalInformation(ClientConstants.ALLOWED_PROVIDERS, new LinkedList<>(allowedProviders)); ClientServicesExtension clientDetailsService = mock(ClientServicesExtension.class); when(clientDetailsService.loadClientByClientId("client-id", "uaa")).thenReturn(clientDetails); mockOidcProvider(); IdentityZoneHolder.get().getConfig().setDefaultIdentityProvider("ldap"); endpoint.setClientDetailsService(clientDetailsService); String redirect = endpoint.loginForHtml(model, null, mockHttpServletRequest, Arrays.asList(MediaType.TEXT_HTML)); assertThat(redirect, startsWith("redirect:http://localhost:8080/uaa")); assertThat(redirect, containsString("my-OIDC-idp1")); assertFalse(model.containsKey("login_hint")); }
private WebDataBinder resolveModelAttribute(String attrName, MethodParameter methodParam, ExtendedModelMap implicitModel, NativeWebRequest webRequest, Object handler) throws Exception { // Bind request parameter onto object... String name = attrName; if ("".equals(name)) { name = Conventions.getVariableNameForParameter(methodParam); } Class<?> paramType = methodParam.getParameterType(); Object bindObject; if (implicitModel.containsKey(name)) { bindObject = implicitModel.get(name); } else if (this.methodResolver.isSessionAttribute(name, paramType)) { bindObject = this.sessionAttributeStore.retrieveAttribute(webRequest, name); if (bindObject == null) { raiseSessionRequiredException("Session attribute '" + name + "' required - not found in session"); } } else { bindObject = BeanUtils.instantiateClass(paramType); } WebDataBinder binder = createBinder(webRequest, bindObject, name); initBinder(handler, name, binder, webRequest); return binder; }
private WebDataBinder resolveModelAttribute(String attrName, MethodParameter methodParam, ExtendedModelMap implicitModel, NativeWebRequest webRequest, Object handler) throws Exception { // Bind request parameter onto object... if ("".equals(attrName)) { attrName = Conventions.getVariableNameForParameter(methodParam); } Class paramType = methodParam.getParameterType(); if (!implicitModel.containsKey(attrName) && this.methodResolver.isSessionAttribute(attrName, paramType)) { Object sessionAttr = this.sessionAttributeStore.retrieveAttribute( webRequest, attrName); if (sessionAttr == null) { raiseSessionRequiredException("Session attribute '" + attrName + "' required - not found in session"); } implicitModel.addAttribute(attrName, sessionAttr); } Object bindObject = implicitModel.get(attrName); if (bindObject == null) { bindObject = BeanUtils.instantiateClass(paramType); } WebDataBinder binder = createBinder(webRequest, bindObject, attrName); initBinder(handler, attrName, binder, webRequest); return binder; }
implicitModel.put(MODEL_KEY_PREFIX_STALE + attrName, Boolean.TRUE); else if (!implicitModel.containsKey(MODEL_KEY_PREFIX_STALE + attrName)) { this.sessionAttributeStore.storeAttribute(webRequest, attrName, attrValue);