我有一个shibboleth idp 2.4.0实现,我有一个自定义登录处理程序。我试过从自定义处理程序的servlet中抛出ServletException,但是生成的idp error.jsp没有显示任何特定的错误消息。我应该从登录处理程序的servlet中抛出一个特定的Exception类型吗?任何见解都会有所帮助,谢谢。
答案 0 :(得分:0)
我能够发现Shibboleth IDP error.jsp在请求中从Throwable获取任何错误消息(如果存在),作为关键字AbstractErrorHandler.ERROR_KEY下的属性。所以在我的servlet中,我捕获了service方法中的所有异常,自定义异常并将其设置为请求属性,然后抛出ServletException。结果。我的自定义错误消息显示在error.jsp。
上我在自定义登录处理程序servlet的service()方法中使用了以下示例(排序):
Throwable myCustomException = new MyServletException("my servlet error messaging");
request.setAttribute(AbstractErrorHandler.ERROR_KEY, myCustomException);
throw new ServletException(myCustomException);