如何将HTTPS与Glassfish 4和JSF 2.2一起使用



出于学习目的,我想在本地环境中开发的应用程序中使用 SSL。

所以我希望我所有的连接都通过SSL。

如何使用 Glassfish 4.0 实现这一点?

下面是使用 JAAS 表单认证的示例:

在 Web 上.xml此代码块定义了将启用 SSL 的 URL:

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>userauth</realm-name>
    <form-login-config>
        <form-login-page>/login.jsf</form-login-page>
        <form-error-page>/loginError.jsf</form-error-page>
    </form-login-config>                
</login-config>
<security-constraint>   
    <display-name>ConstraintSSL</display-name>
    <web-resource-collection>
        <web-resource-name>protected</web-resource-name>
        <description/>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
        <http-method>HEAD</http-method>
        <http-method>PUT</http-method>
        <http-method>OPTIONS</http-method>
        <http-method>TRACE</http-method>
        <http-method>DELETE</http-method>
    </web-resource-collection>
    <user-data-constraint>        
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>        
</security-constraint>

现在,在您的应用程序服务器(glassfish)上配置您的身份验证领域"userauth",在此示例中:

     create-auth-realm --classname com.sun.enterprise.security.ee.auth.realm.jdbc.JDBCRealm
 --property jaas-context=jdbcRealm:datasource-jndi=oracleXE10gJDBCResource:user-
table=TB_USER:user-name-column=ID_USER:password-column=PASSWORD:group-
table=TB_USER_GROUP_USER:group-name-column=ID_GROUP:group_table_user-name-
column=ID_GROUP:digest-algorithm=MD5 userauth

在此示例中,我在名为"TB_USER"的用户表上创建了一个基于 JDBC 的域,其中包含 MD5 加密密码以及组表名称。您可以创建自己的认证领域,它可以是文件、jdbc 或其他 JAAS 类型(请参阅每个特定类型的 JAAS 文档)。

现在,对应用的任何请求都应使用 SSL。

Glassfish 将重定向到 SSL 端口(默认为 8181),您的浏览器将显示默认的 SSL 信任证书警报窗口(如果您使用的是自签名证书),询问您是否信任该连接,接受后您应该会看到页面在 SSL 模式下正确呈现 - https

导航到

Glassfish 管理控制台,然后导航到服务器设置 -->网络侦听器。在那里,您可以将侦听器设置为使用 SSL。默认情况下有三个侦听器,4848 用于管理控制台,8080 用于常规 http 侦听,8181 用于安全 http 侦听。您可以在这里做几件事

    要为侦听器
  • 启用SSL或编辑侦听器,请检查安全性选项

  • 禁用侦听器取消选中

  • 在 SSL 选项卡上,填写 SSL 信息

最新更新