该问题的原因可能是因为缺少SAML Login处理程序的PostProcessor。因此,可以手动添加此PostProcessor,以确保/saml_login正确运行。
下面是一个示例代码片段,演示如何添加SAML Login处理程序的PostProcessor:
@Component(service = { Servlet.class }, property = { Constants.SERVICE_DESCRIPTION + "=SAML Login PostProcessor Servlet", "sling.servlet.methods=" + HttpConstants.METHOD_POST, "sling.servlet.paths=" + "/saml_login/*", "sling.servlet.selectors=" + "post" }) public class SAMLLoginPostProcessorServlet extends SlingSafeMethodsServlet {
private static final long serialVersionUID = 1L;
@Reference
private SAMLLoginPostProcessorService samlLoginPostProcessorService;
@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
// Do SAML Login Post Processing
try {
samlLoginPostProcessorService.postProcess(request, response);
} catch (SAMLException e) {
throw new ServletException("Error in SAML Login Post Processor", e);
}
}
}
在代码中,您需要确保添加了正确的依赖项,如SAMLLoginPostProcessorService的引用。使用此代码,您应该能够正确运行/saml_login。