java ee 8 security api
This commit is contained in:
50
java-ee-8-security-api/app-auth-form-store-ldap/pom.xml
Normal file
50
java-ee-8-security-api/app-auth-form-store-ldap/pom.xml
Normal file
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>app-auth-form-store-ldap</artifactId>
|
||||
<packaging>war</packaging>
|
||||
|
||||
<parent>
|
||||
<groupId>com.baeldung</groupId>
|
||||
<artifactId>java-ee-8-security-api</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.unboundid</groupId>
|
||||
<artifactId>unboundid-ldapsdk</artifactId>
|
||||
<version>4.0.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>net.wasdev.wlp.maven.plugins</groupId>
|
||||
<artifactId>liberty-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>install-server</id>
|
||||
<phase>prepare-package</phase>
|
||||
<goals>
|
||||
<goal>install-server</goal>
|
||||
<goal>create-server</goal>
|
||||
<goal>install-feature</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>install-apps</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>install-apps</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.baeldung.javaee.security;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.HttpConstraint;
|
||||
import javax.servlet.annotation.ServletSecurity;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
@WebServlet("/admin")
|
||||
@ServletSecurity(value = @HttpConstraint(rolesAllowed = {"admin_role"}))
|
||||
public class AdminServlet extends HttpServlet {
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
response.getWriter().append("User :" + request.getUserPrincipal().getName() + "\n");
|
||||
response.getWriter().append("User in Role user_role :" + request.isUserInRole("user_role") + "\n");
|
||||
response.getWriter().append("User in Role admin_role :" + request.isUserInRole("admin_role"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.baeldung.javaee.security;
|
||||
|
||||
import javax.enterprise.context.ApplicationScoped;
|
||||
import javax.security.enterprise.authentication.mechanism.http.FormAuthenticationMechanismDefinition;
|
||||
import javax.security.enterprise.authentication.mechanism.http.LoginToContinue;
|
||||
import javax.security.enterprise.identitystore.LdapIdentityStoreDefinition;
|
||||
|
||||
@FormAuthenticationMechanismDefinition(
|
||||
loginToContinue = @LoginToContinue(
|
||||
loginPage = "/login.html",
|
||||
errorPage = "/login-error.html"
|
||||
)
|
||||
)
|
||||
@LdapIdentityStoreDefinition(
|
||||
url = "ldap://localhost:10389",
|
||||
callerBaseDn = "ou=caller,dc=baeldung,dc=com",
|
||||
groupSearchBase = "ou=group,dc=baeldung,dc=com",
|
||||
groupSearchFilter = "(&(member=%s)(objectClass=groupOfNames))"
|
||||
)
|
||||
@ApplicationScoped
|
||||
public class AppConfig {
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.baeldung.javaee.security;
|
||||
|
||||
import com.unboundid.ldap.listener.InMemoryDirectoryServer;
|
||||
import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
|
||||
import com.unboundid.ldap.listener.InMemoryListenerConfig;
|
||||
import com.unboundid.ldap.sdk.LDAPException;
|
||||
import com.unboundid.ldif.LDIFReader;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
|
||||
@WebServlet(value = "/init-ldap", loadOnStartup = 1)
|
||||
public class LdapSetupServlet extends HttpServlet {
|
||||
|
||||
private InMemoryDirectoryServer inMemoryDirectoryServer;
|
||||
|
||||
@Override
|
||||
public void init() throws ServletException {
|
||||
super.init();
|
||||
initLdap();
|
||||
System.out.println("@@@START_");
|
||||
}
|
||||
|
||||
private void initLdap() {
|
||||
try {
|
||||
InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig("dc=baeldung,dc=com");
|
||||
config.setListenerConfigs(InMemoryListenerConfig.createLDAPConfig("default", 10389));
|
||||
config.setSchema(null);
|
||||
inMemoryDirectoryServer = new InMemoryDirectoryServer(config);
|
||||
inMemoryDirectoryServer.importFromLDIF(true,
|
||||
new LDIFReader(this.getClass().getResourceAsStream("/users.ldif")));
|
||||
inMemoryDirectoryServer.startListening();
|
||||
} catch (LDAPException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
super.destroy();
|
||||
inMemoryDirectoryServer.shutDown(true);
|
||||
System.out.println("@@@END");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.baeldung.javaee.security;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.HttpConstraint;
|
||||
import javax.servlet.annotation.ServletSecurity;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
@WebServlet("/user")
|
||||
@ServletSecurity(value = @HttpConstraint(rolesAllowed = {"user_role"}))
|
||||
public class UserServlet extends HttpServlet {
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
response.getWriter().append("User :" + request.getUserPrincipal().getName() + "\n");
|
||||
response.getWriter().append("User in Role user_role :" + request.isUserInRole("user_role") + "\n");
|
||||
response.getWriter().append("User in Role admin_role :" + request.isUserInRole("admin_role"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<server description="OpenLiberty MicroProfile server">
|
||||
|
||||
<featureManager>
|
||||
<feature>webProfile-8.0</feature>
|
||||
</featureManager>
|
||||
|
||||
<httpEndpoint httpPort="${default.http.port}" httpsPort="${default.https.port}"
|
||||
id="defaultHttpEndpoint" host="*"/>
|
||||
</server>
|
||||
@@ -0,0 +1,47 @@
|
||||
dn: dc=baeldung,dc=com
|
||||
objectclass: top
|
||||
objectclass: dcObject
|
||||
objectclass: organization
|
||||
dc: baeldung
|
||||
o: baeldung
|
||||
|
||||
dn: ou=caller,dc=baeldung,dc=com
|
||||
objectclass: top
|
||||
objectclass: organizationalUnit
|
||||
ou: caller
|
||||
|
||||
dn: ou=group,dc=baeldung,dc=com
|
||||
objectclass: top
|
||||
objectclass: organizationalUnit
|
||||
ou: group
|
||||
|
||||
dn: uid=admin,ou=caller,dc=baeldung,dc=com
|
||||
objectclass: top
|
||||
objectclass: uidObject
|
||||
objectclass: person
|
||||
uid: admin
|
||||
cn: Administrator
|
||||
sn: Admin
|
||||
userPassword: passadmin
|
||||
|
||||
dn: uid=user,ou=caller,dc=baeldung,dc=com
|
||||
objectclass: top
|
||||
objectclass: uidObject
|
||||
objectclass: person
|
||||
uid: user
|
||||
cn: User
|
||||
sn: User
|
||||
userPassword: passuser
|
||||
|
||||
dn: cn=admin_role,ou=group,dc=baeldung,dc=com
|
||||
objectclass: top
|
||||
objectclass: groupOfNames
|
||||
cn: admin_role
|
||||
member: uid=admin,ou=caller,dc=baeldung,dc=com
|
||||
|
||||
dn: cn=user_role,ou=group,dc=baeldung,dc=com
|
||||
objectclass: top
|
||||
objectclass: groupOfNames
|
||||
cn: user_role
|
||||
member: uid=admin,ou=caller,dc=baeldung,dc=com
|
||||
member: uid=user,ou=caller,dc=baeldung,dc=com
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
Authentication Error
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Form-based Authentication
|
||||
</p>
|
||||
<form action="j_security_check">
|
||||
<p>
|
||||
<strong>Username </strong>
|
||||
<input name="j_username" type="text"/>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Password </strong>
|
||||
<input name="j_password" type="text"/>
|
||||
</p>
|
||||
<p>
|
||||
<input type="submit" value="Login">
|
||||
</p>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user