Jakarta ee 使用自定义JavaEE领域登录

Jakarta ee 使用自定义JavaEE领域登录,jakarta-ee,glassfish,salt,sha256,jdbcrealm,Jakarta Ee,Glassfish,Salt,Sha256,Jdbcrealm,我用glassfish和netbeans创建了一个JavaEE应用程序。 我从安装了定制的灵活jdbc领域。 我按照所有说明使用了如下所示的属性(默认和服务器配置) 我的第一个问题是,应该在默认配置还是服务器配置中创建领域 我还创建了数据库(E-Health),其中包含表:用户、组 users: username, password, salt groups: groupname, username(fk->users.username) 我想使用这个领域的原因是我想用salt加密密码,

我用glassfish和netbeans创建了一个JavaEE应用程序。 我从安装了定制的灵活jdbc领域。 我按照所有说明使用了如下所示的属性(默认和服务器配置)

我的第一个问题是,应该在默认配置还是服务器配置中创建领域

我还创建了数据库(E-Health),其中包含表:用户、组

users: username, password, salt
groups: groupname, username(fk->users.username)
我想使用这个领域的原因是我想用salt加密密码,而用jdbc领域我没有这个选项

我的问题是我不能登录

我使用net beans IDE并创建了登录和登录错误页面:

LOGIN.JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login Page</title>
</head>
<body>
<form action="j_security_check" method="POST">
Username:<input type="text" name="j_username"><br>
Password:<input type="password" name="j_password">
<input type="submit" value="Login">
</form>
</body>
</html>    
我创建的小组和角色是医生、药剂师、微生物学、患者和管理员

我在web.xml和glassfish-web.xml中创建了角色:

WEB.XML

<session-config>
    <session-timeout>
        1
    </session-timeout>
</session-config>
<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/view/error.jsp</location>
</error-page>
<security-constraint>
    <display-name>AdminOnly</display-name>
    <web-resource-collection>
        <web-resource-name>admin</web-resource-name>
        <description/>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admins</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>DocOnly</display-name>
    <web-resource-collection>
        <web-resource-name>doctor1</web-resource-name>
        <url-pattern>/view/doc_index.jsp</url-pattern>
    </web-resource-collection>
    <web-resource-collection>
        <web-resource-name>doctor2</web-resource-name>
        <description/>
        <url-pattern>/view/doctor.jsp</url-pattern>
    </web-resource-collection>
    <web-resource-collection>
        <web-resource-name>doctor3</web-resource-name>
        <description/>
        <url-pattern>/view/history.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>doctors</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>PharmOnly</display-name>
    <web-resource-collection>
        <web-resource-name>pharm</web-resource-name>
        <description/>
        <url-pattern>/view/pharm.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>pharms</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>MicroOnly</display-name>
    <web-resource-collection>
        <web-resource-name>micro</web-resource-name>
        <description/>
        <url-pattern>/view/micro.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>micros</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>PatOnly</display-name>
    <web-resource-collection>
        <web-resource-name>patient</web-resource-name>
        <description/>
        <url-pattern>/view/patient.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>patients</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>myRealm</realm-name>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/loginError.html</form-error-page>
    </form-login-config>
</login-config>
<security-role>
    <description/>
    <role-name>admins</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>doctors</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>pharms</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>micros</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>patients</role-name>
</security-role>
<resource-ref>
    <res-ref-name>jdbc/e-health</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
<glassfish-web-app error-url="">
<security-role-mapping>
<role-name>doctors</role-name>
<group-name>doctors</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>micros</role-name>
<group-name>micros</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>pharms</role-name>
<group-name>pharms</group-name>
</security-role-mapping>
 <security-role-mapping>
<role-name>patients</role-name>
<group-name>patients</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>admins</role-name>
<group-name>admins</group-name>
</security-role-mapping>
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
  <description>Keep a copy of the generated servlet class' java code.</description>
</property>
</jsp-config>
</glassfish-web-app>
以下是证书:

用户名:约翰 密码(含盐):kwkBo2sKjPHPvqFTQReMGS8Cbj8PbAoFxvuk :4B8HANRWRI9HITAES4S8X5F05WWFZ3IN3+Hjp7XtRg=

用户名:约翰 组名:医生

加密密码为:12345

我做错了什么

我将凭证放入表格:John/12345,并显示错误页面


我必须用某种方式解密密码吗?域本身不起作用吗?

域位于服务器配置中。您是否按照本文档“使用域定义配置glassfish”一节中的说明将域添加到glassfish配置中?是的,我遵循了所有这些步骤……您的配置中有“myRealm”,但示例使用PhotoXChangeRealm{org.wamble.glassfish.auth.flexiblejdbloginmodule required;};因此,您的login.conf应该使用:myRealm{org.wamble.glassfish.auth.flexiblejdbloginmodule required;};是的,我也这样做了…我仍然无法理解为什么我不能登录!编辑:还有其他想法吗?
<session-config>
    <session-timeout>
        1
    </session-timeout>
</session-config>
<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/view/error.jsp</location>
</error-page>
<security-constraint>
    <display-name>AdminOnly</display-name>
    <web-resource-collection>
        <web-resource-name>admin</web-resource-name>
        <description/>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admins</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>DocOnly</display-name>
    <web-resource-collection>
        <web-resource-name>doctor1</web-resource-name>
        <url-pattern>/view/doc_index.jsp</url-pattern>
    </web-resource-collection>
    <web-resource-collection>
        <web-resource-name>doctor2</web-resource-name>
        <description/>
        <url-pattern>/view/doctor.jsp</url-pattern>
    </web-resource-collection>
    <web-resource-collection>
        <web-resource-name>doctor3</web-resource-name>
        <description/>
        <url-pattern>/view/history.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>doctors</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>PharmOnly</display-name>
    <web-resource-collection>
        <web-resource-name>pharm</web-resource-name>
        <description/>
        <url-pattern>/view/pharm.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>pharms</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>MicroOnly</display-name>
    <web-resource-collection>
        <web-resource-name>micro</web-resource-name>
        <description/>
        <url-pattern>/view/micro.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>micros</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>PatOnly</display-name>
    <web-resource-collection>
        <web-resource-name>patient</web-resource-name>
        <description/>
        <url-pattern>/view/patient.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>patients</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>myRealm</realm-name>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/loginError.html</form-error-page>
    </form-login-config>
</login-config>
<security-role>
    <description/>
    <role-name>admins</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>doctors</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>pharms</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>micros</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>patients</role-name>
</security-role>
<resource-ref>
    <res-ref-name>jdbc/e-health</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
<glassfish-web-app error-url="">
<security-role-mapping>
<role-name>doctors</role-name>
<group-name>doctors</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>micros</role-name>
<group-name>micros</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>pharms</role-name>
<group-name>pharms</group-name>
</security-role-mapping>
 <security-role-mapping>
<role-name>patients</role-name>
<group-name>patients</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>admins</role-name>
<group-name>admins</group-name>
</security-role-mapping>
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
  <description>Keep a copy of the generated servlet class' java code.</description>
</property>
</jsp-config>
</glassfish-web-app>
@ServletSecurity(
@HttpConstraint(rolesAllowed = {"doctors"}) 
)