是否可以从JSF操作转发到Siteminder login.fcc?
我的应用程序有一个“自定义”(JSF)登录页面。我的公司使用Siteminder进行身份验证。因此,为了使用“自定义”页面登录Siteminder,我必须有一个表单,该表单使用适当的表单字段(用户名/密码和两个特定于Siteminder的隐藏字段)发布到/login.fcc 我试图做的是继续利用JSF的表单验证等功能,并且仍然发布到login.fcc 以下是我的自定义表单的精简版本:是否可以从JSF操作转发到Siteminder login.fcc?,jsf,forward,siteminder,Jsf,Forward,Siteminder,我的应用程序有一个“自定义”(JSF)登录页面。我的公司使用Siteminder进行身份验证。因此,为了使用“自定义”页面登录Siteminder,我必须有一个表单,该表单使用适当的表单字段(用户名/密码和两个特定于Siteminder的隐藏字段)发布到/login.fcc 我试图做的是继续利用JSF的表单验证等功能,并且仍然发布到login.fcc 以下是我的自定义表单的精简版本: <rich:messages /> <h:form id="adminLogin" p
<rich:messages />
<h:form id="adminLogin" prependId="false">
<h:panelGrid columns="2" styleClass="center">
<h:outputLabel value="HUB USERNAME:" />
<h:inputText id="USER" label="Username" size="12" required="true" />
<h:outputLabel value="HUB PASSWORD:" />
<h:inputSecret id="PASSWORD" label="Password" size="12" required="true" />
<input type="hidden" name="target" value="#{loginController.smTarget}" />
<input type="hidden" name="smagentname" value="#{loginController.smAgentName}" />
</h:panelGrid>
<h:panelGroup layout="block" styleClass="max-width button-panel">
<a4j:commandButton id="adminLoginBtn" value="LOGIN"
styleClass="login-btn"
action="#{loginController.managerLogin}" />
</h:panelGroup>
</h:form>
您可以看到,我正在记录除密码字段之外的所有字段的值,它们都正确地打印在我的日志中…因此我知道我正在获取这些值。我的“forwardTo()”方法只是获取ExternalContext并对其调用dispatch(),传递到login.fcc页面的路径(即“/forms/login.fcc”)
当我在表单中输入值并单击登录按钮时,我会在控制台中看到我的值,但在浏览器中会收到404消息
我可以手动将“/forms/login.fcc”页面放在地址行中,并且我对GET呈现login.fcc页面没有问题。但是,我当然不想呈现login.fcc(GET),我想创建Siteminder登录(通过POST)
据我所知,所有请求参数都是通过一个转发过程提供的,我希望这个过程能够正常工作
我可以使用同一个表单并取消JSF的设置…让登录按钮简单地提交表单(其操作是/forms/login.fcc via POST,它也可以正常工作,但是我失去了JSF提供的表单/字段验证的好处)
有什么想法吗?使用以下过程:
- 遵循SiteMinder重定向
- 发送您的凭据(用户名/密码)
- 再次遵循SiteMinder重定向
- 发送SiteMinder cookies
http://:8080//forms/login.fcc
。您是否首先在浏览器中测试了URL?如果它有效,您具体如何尝试访问该URL(我的意思是forwardTo
方法代码)?@Luiggi-这让我开始思考……我现在可能有了线索。因此,Apache坐在我们的JBoss服务器前面,会看到/forms/login.fcc并将该请求发送给Siteminder代理处理。因此,从技术上讲,它不在webapp中托管,因为它在JBoss之外。因此,我怀疑转发不会起作用。
public void managerLogin()
{
LoginController.LOG.debug("manager is logging in...");
LoginController.LOG.debug("user: " + getRequestParameterValue("USER"));
LoginController.LOG.debug("smagent: " + getRequestParameterValue("smagentname"));
LoginController.LOG.debug("target: " + getRequestParameterValue("target"));
forwardTo(LoginController.SM_LOGIN_FCC);
}