HTTP-аутентификация в JSF 1.2 в Websphere

Я использую JSF 1.2 + Tomahawk 1.1.13 на Webshere 7.0.

Мой web.xml:

<welcome-file-list>
    <welcome-file>/search.faces</welcome-file>
</welcome-file-list>

<security-constraint>
    <display-name>Websphere Security Constraint</display-name>
    <web-resource-collection>
        <web-resource-name>Default</web-resource-name>
        <description />
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/login.jsp</form-error-page>
    </form-login-config>
</login-config>

мой логин.jsp:

<form method="post" action="j_security_check">

    <jsp:include page="head.jsp" />

    <t:panelGrid columns="2" border="1"
        columnClasses="unfixedCol,fixedCol"
        style="style=text-align:top; margin-top:20px; margin-bottom:20px;">

        <t:panelGroup>
            Login
        </t:panelGroup>
        <t:panelGroup>
            <h:inputText id="j_username" autocomplete="off" size="20" />
        </t:panelGroup>

        <t:panelGroup>
            Password
        </t:panelGroup>
        <t:panelGroup>
            <h:inputSecret id="j_password" autocomplete="off" size="20" />
        </t:panelGroup>

        <f:facet name="footer">
            <t:panelGroup colspan="4"
                style="text-align:right; background-color:#d9e2f2;">
                <h:commandButton type="submit" value="Submit" /> &nbsp; 
                <h:commandButton type="reset" value="Reset" />
            </t:panelGroup>
        </f:facet>

    </t:panelGrid>

    <jsp:include page="foot.jsp" />

</form>

Когда я получаю доступ к /localhost:9080/App/ и ввожу правильные учетные данные, все выглядит нормально, я вхожу в систему, но это работает с проблемами:

  1. Я могу получить доступ к jsp-страницам приложения без проверки безопасности (я могу получить доступ к /localhost:9080/App/search.jsp без проверки, но когда я обращаюсь к /localhost:9080/App/ - есть проверка безопасности). Пробовал разные шаблоны URL.

  2. Когда я пытаюсь получить пользователя HTTP-сеанса с помощью FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal() - всегда есть ноль, все время, когда я регистрирую идентификатор. Зачем?

Просмотрел все руководства, включил несколько вопросов по stackowerflow и так и не понял, в чем моя проблема.

Спасибо за помощь


person Peter    schedule 10.08.2012    source источник


Ответы (1)


Для нашего приложения мы определили как:

веб.xml

<security-constraint>
    <display-name>Security Constraint</display-name>
    <web-resource-collection>
        <web-resource-name>Protected Area</web-resource-name>
        <url-pattern>*.jsf</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
</security-constraint>

и поскольку мы также интегрировали аутентификацию LDAP, мы создали пользовательский application-policy и указали в realm

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>OUR_AUTH_NAME_DEFINED_IN_login-config.xml</realm-name>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/login.jsp?invalidUser=true</form-error-page>
    </form-login-config>
</login-config>

Надеюсь это поможет!!!

person Bharat Sinha    schedule 15.08.2012