fix #2690 replace deprecated methods

This commit is contained in:
Shinsuke Sugaya 2022-09-29 13:56:19 +09:00
parent 06d495e11c
commit 9114a5dc69

View file

@ -23,6 +23,7 @@ import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@ -53,6 +54,8 @@ import org.lastaflute.web.util.LaRequestUtil;
import org.lastaflute.web.util.LaResponseUtil;
import com.onelogin.saml2.Auth;
import com.onelogin.saml2.authn.AuthnRequestParams;
import com.onelogin.saml2.logout.LogoutRequestParams;
import com.onelogin.saml2.settings.Saml2Settings;
import com.onelogin.saml2.settings.SettingsBuilder;
@ -160,7 +163,7 @@ public class SamlAuthenticator implements SsoAuthenticator {
return null;
}
return new SamlCredential(auth);
return createLoginCredential(request, response, auth);
} catch (final Exception e) {
logger.warn("Authentication is failed.", e);
return null;
@ -170,7 +173,8 @@ public class SamlAuthenticator implements SsoAuthenticator {
try {
final Auth auth = new Auth(getSettings(), request, response);
final String loginUrl = auth.login(null, false, false, true, true);
final AuthnRequestParams authnRequestParams = new AuthnRequestParams(false, false, true);
final String loginUrl = auth.login(null, authnRequestParams, true);
request.getSession().setAttribute(SAML_STATE, UuidUtil.create());
return new ActionResponseCredential(() -> HtmlResponse.fromRedirectPathAsIs(loginUrl));
} catch (final Exception e) {
@ -180,10 +184,17 @@ public class SamlAuthenticator implements SsoAuthenticator {
}).orElseGet(() -> null);
}
protected LoginCredential createLoginCredential(final HttpServletRequest request, final HttpServletResponse response, final Auth auth) {
final SamlCredential samlCredential = new SamlCredential(auth);
if (logger.isDebugEnabled()) {
logger.debug("SamlCredential: {}", samlCredential);
}
return samlCredential;
}
@Override
public void resolveCredential(final LoginCredentialResolver resolver) {
resolver.resolve(SamlCredential.class, credential -> OptionalEntity.of(credential.getUser()));
}
@Override
@ -197,8 +208,9 @@ public class SamlAuthenticator implements SsoAuthenticator {
final SamlUser samlUser = (SamlUser) user.getFessUser();
try {
final Auth auth = new Auth(getSettings(), request, response);
return auth.logout(null, samlUser.getName(), samlUser.getSessionIndex(), true, samlUser.getNameIdFormat(),
samlUser.getNameidNameQualifier(), samlUser.getNameidSPNameQualifier());
final LogoutRequestParams logoutRequestParams = new LogoutRequestParams(samlUser.getSessionIndex(), samlUser.getName(),
samlUser.getNameIdFormat(), samlUser.getNameidNameQualifier(), samlUser.getNameidSPNameQualifier());
return auth.logout(null, logoutRequestParams, true);
} catch (final Exception e) {
logger.warn("Failed to logout from IdP: {}", samlUser, e);
}