java ee 8 security api

This commit is contained in:
eelhazati
2018-05-28 21:45:51 +00:00
parent ce645b67d2
commit fc5ad8e88e
38 changed files with 1143 additions and 0 deletions

View 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>

View File

@@ -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"));
}
}

View File

@@ -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 {
}

View File

@@ -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");
}
}

View File

@@ -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"));
}
}

View File

@@ -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>

View File

@@ -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

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Authentication Error
</body>
</html>

View File

@@ -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>