我正在尝试使用Postgres 9.4进行Payara身份验证。我一直在关注一些教程,但它们不起作用。我创建了一个数据库,填充它,记得散列密码(使用MD-5),然后是JDBC连接池(ping工作),然后是jdbc资源,一个领域,接下来我创建一个java web应用程序,我记得关于web。 xml,glassfish-web.xml,关于登录和错误页面....在部署应用程序并尝试登录后,我得到一个错误页面(我在应用程序中创建的那个)。
这正是我所做的:
我创建了一个名为“security”的数据库:
CREATE TABLE "Group" (
group_id serial NOT NULL,
group_name text NOT NULL,
user_id int NULL,
CONSTRAINT Group_pk PRIMARY KEY (group_id)
);
CREATE TABLE Users (
user_id serial NOT NULL,
username text NOT NULL,
password text NOT NULL,
CONSTRAINT Users_pk PRIMARY KEY (user_id)
);
ALTER TABLE "Group" ADD CONSTRAINT Group_Users
FOREIGN KEY (user_id)
REFERENCES Users (user_id)
NOT DEFERRABLE
INITIALLY IMMEDIATE
;
我使用加密网站加密我的密码“test”,并获得以下值: 098f6bcd4621d373cade4e832627b4f6。我用这个值来填充我的数据库:
我使用Payara Server。 我创建了新的JDBC连接池,就像在图片上一样。我得到信息“Ping成功”,所以我认为这部分是可以的。
我使用JNDI名称:jdbc / simplesec和池名称:secuPool创建JDBC资源。
我创建了一个名为“secuRealm”的新领域 - 下面的图片。我想那里可能有些不对劲? realm part 1 realm part 2 接下来,我编写应用程序部分。 (我选择web应用程序,java)。 glassfish-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<security-role-mapping>
<role-name>admin</role-name>
<group-name>admin</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>guest</role-name>
<group-name>guest</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>
的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>secuRealm</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
</web-app>
的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>JSP Page</title>
</head>
<body>
<h1>Login</h1>
<form action="j_security_check" method="POST">
Username:<input type="text" name="j_username"/><br/>
Password:<input type="password" name="j_password" /><br />
<input type="submit" value="Login" />
<br/>
</form>
</body>
</html>
的error.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Incorrect Credentials</h1>
Try again. <br/>
<a href="login.jsp">Login</a>
</body>
</html>
index.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1><br />
<a href="login.jsp">Login</a>
</body>
</html>
部署应用程序后,我尝试登录。用户名:1,密码:test。我得到一个error.jsp页面作为回应。我不明白为什么,使用正确的用户数据,我无法登录。 我在哪里犯了错误以及如何使它发挥作用?
答案 0 :(得分:0)
尝试在领域设置中指定Digest Algorythm:none