Мы используем WSO2 Identity Server 5.8.0.
Мы сделали расширение для org.wso2.carbon.identity.application.authenticator.samlsso.manager.DefaultSAML2SSOManager
, расположенного в проекте identity-outbound-auth-samlsso
В основном нам нужно добавить несколько проверок в Ответ SAML при использовании внешних IdP на основе аутентификации SAML.
Мы выполнили все проверки, и все работает нормально. Мы столкнулись с одной маленькой проблемой. В некоторых случаях, когда возникают некоторые ошибки доступа, нам необходимо настроить сообщение об ошибке для пользователя. Я видел здесь Я видел, что можно настроить сообщение об ошибке, и можно настроить WSO2 IS, чтобы передать код ошибки в параметре запроса. Итак, что я хотел сделать, так это сгенерировать собственный код ошибки при возникновении одной ошибки. Я попробовал предыдущую конфигурацию, а затем в классе org.wso2.carbon.identity.application.authenticator.samlsso.SAMLSSOAuthenticator
сделал следующее:
@Override
protected void processAuthenticationResponse(HttpServletRequest request, HttpServletResponse response, AuthenticationContext context) throws AuthenticationFailedException {
try{
//Original code
} catch (SPIDCheckException spe) {
// whenever the code reaches here the subject identifier will be null. Therefore we can't pass AuthenticatedUser object with the exception.
AuthenticationFailedException afe = new AuthenticationFailedException(spe.getMessage(), spe);
afe.setErrorCode("MY_CUSTOM_ERROR_CODE");
throw afe;
}
}
Я ожидал, что с предыдущей конфигурацией мой пользовательский cose будет отображаться в параметре запроса, но это не так. Так что мне пришлось искать обходной путь; Мое решение заключалось в том, чтобы добавить к ответу повар ie, но он мне не нравится.
Есть ли шанс распространить собственный код ошибки из SAMLSSOAuthenticator
на страницу ошибки входа JSP в параметр строки запроса?
Я что-нибудь упустил?
Спасибо
Анджело