Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从JSF操作转发到Siteminder login.fcc?_Jsf_Forward_Siteminder - Fatal编程技术网

是否可以从JSF操作转发到Siteminder 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

我的应用程序有一个“自定义”(JSF)登录页面。我的公司使用Siteminder进行身份验证。因此,为了使用“自定义”页面登录Siteminder,我必须有一个表单,该表单使用适当的表单字段(用户名/密码和两个特定于Siteminder的隐藏字段)发布到/login.fcc

我试图做的是继续利用JSF的表单验证等功能,并且仍然发布到login.fcc

以下是我的自定义表单的精简版本:

<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
下面有一篇文章详细解释了该过程:


因此,您希望从托管bean导航到
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);
}