Commit fe3a882f authored by akucera's avatar akucera
Browse files

added CommonComponents project;changes to the auth mechanism

parent c1ae4f4d
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
<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>

  <groupId>cz.muni.fi.lasaris.sbms</groupId>
  <artifactId>CommonComponents</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>CommonComponents</name>
  <url>https://gitlab.fi.muni.cz/xkucer16/semanticBMS</url>


<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

  <dependencies>
    <dependency>
    		<groupId>log4j</groupId>
  			<artifactId>log4j</artifactId>	
  			<version>1.2.17</version>
	</dependency>
	<dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
    </dependency>	 
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.9</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
  <properties>
        <jersey.version>2.22.1</jersey.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
  
</project>
+5 −1
Original line number Diff line number Diff line
package cz.muni.fi.lasaris.sbms.semantics.api.auth;
package cz.muni.fi.lasaris.sbms.auth;

import java.util.Properties;

import javax.ws.rs.container.ContainerRequestContext;

public interface AuthProvider {

	void init(Properties props);
	
	boolean authenticate(String user, String password, ContainerRequestContext requestContext);

	boolean authorize(String user, String role, ContainerRequestContext requestContext);
+17 −6
Original line number Diff line number Diff line
package cz.muni.fi.lasaris.sbms.semantics.api.auth;
package cz.muni.fi.lasaris.sbms.auth;

import java.io.IOException;
import java.security.Principal;
import java.util.Properties;

import javax.annotation.Priority;
import javax.ws.rs.Priorities;
@@ -12,8 +13,6 @@ import javax.xml.bind.DatatypeConverter;

import org.apache.log4j.Logger;

import cz.muni.fi.lasaris.sbms.semantics.Application;

//http://stackoverflow.com/questions/17068528/authorization-with-rolesalloweddynamicfeature-and-jersey
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {
@@ -21,13 +20,20 @@ public class AuthenticationFilter implements ContainerRequestFilter {

	private AuthProvider ap;
	
	private static Properties props = null; 
	
	public static void setProperties(Properties props) {
		AuthenticationFilter.props = props;
	}
	
	public AuthenticationFilter() {
		super();
		try {
			String className = Application.getInstance().getSBMSProperties().getProperty("api.customAuth.provider");
			String className = AuthenticationFilter.props.getProperty("auth.provider");
			if(className != null) {
				Class<?> c = Class.forName(className);
				ap = (AuthProvider)c.newInstance();
				ap.init(props);
			} else {
				throw new IllegalArgumentException("customAuth is required but no AuthProvider implementation is provided.");
			}
@@ -36,6 +42,7 @@ public class AuthenticationFilter implements ContainerRequestFilter {
			logger.error("Unable to load AuthProvider - allowing all users.");
			ap = new AuthProvider() {
				
				
				@Override
				public boolean authenticate(String user, String password, ContainerRequestContext requestContext) {
					return true;
@@ -46,6 +53,10 @@ public class AuthenticationFilter implements ContainerRequestFilter {
					return true;
				}

				@Override
				public void init(Properties props) {
				}
				
			};
		}
	}
+20 −16
Original line number Diff line number Diff line
package cz.muni.fi.lasaris.sbms.semantics.api.auth;
package cz.muni.fi.lasaris.sbms.auth;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import javax.ws.rs.container.ContainerRequestContext;

import cz.muni.fi.lasaris.sbms.semantics.Application;

public class PropertiesAuthProvider implements AuthProvider {
	
	Map<String,String> passwords;
	Map<String, String> roles;
	
	public PropertiesAuthProvider() {
		
	}
	
	@Override
	public boolean authenticate(String user, String password, ContainerRequestContext requestContext) {
		return passwords.containsKey(user) && passwords.get(user).equals(password);
	}

	@Override
	public boolean authorize(String user, String role, ContainerRequestContext requestContext) {
		return roles.containsKey("user") && roles.get(user).equals(role);
	}

	@Override
	public void init(Properties props) {
		this.passwords = new HashMap<String, String>();
		this.roles = new HashMap<String, String>();
		
		String usersProp = Application.getInstance().getSBMSProperties().getProperty("api.customAuth.users");
		String roleUProp = Application.getInstance().getSBMSProperties().getProperty("api.customAuth.roles.user");
		String roleAProp = Application.getInstance().getSBMSProperties().getProperty("api.customAuth.roles.admin");
		String usersProp = props.getProperty("auth.propertiesAuth.users");
		String roleUProp = props.getProperty("auth.propertiesAuth.roles.user");
		String roleAProp = props.getProperty("auth.propertiesAuth.roles.admin");
		
		if(usersProp != null) {
			String[] ups = usersProp.split("\\|");
@@ -45,14 +59,4 @@ public class PropertiesAuthProvider implements AuthProvider {
		
	}

	@Override
	public boolean authenticate(String user, String password, ContainerRequestContext requestContext) {
		return passwords.containsKey(user) && passwords.get(user).equals(password);
	}

	@Override
	public boolean authorize(String user, String role, ContainerRequestContext requestContext) {
		return roles.containsKey("user") && roles.get(user).equals(role);
	}

}
+13 −28
Original line number Diff line number Diff line
@@ -2,13 +2,13 @@
  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>

  <groupId>cz.muni.fi.lasaris</groupId>
  <groupId>cz.muni.fi.lasaris.sbms</groupId>
  <artifactId>DataAccessAPI</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>DataAccessAPI</name>
  <url>http://maven.apache.org</url>
  <url>https://gitlab.fi.muni.cz/xkucer16/semanticBMS</url>

  <dependencyManagement>
        <dependencies>
@@ -24,8 +24,8 @@

    <dependencies>
         <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-grizzly2-http</artifactId>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
        </dependency>
         
         <dependency>
@@ -34,13 +34,6 @@
    		<!--  <version>${jersey.version}</version> -->
		 </dependency>
        
        <dependency>
    		<groupId>org.apache.jena</groupId>
    		<artifactId>apache-jena-libs</artifactId>
    		<type>pom</type>
    		<version>3.0.0</version>
  		</dependency>
        
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
@@ -48,6 +41,13 @@
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>cz.muni.fi.lasaris.sbms</groupId>
            <artifactId>CommonComponents</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
  
  </dependencies>
	
	<build>
@@ -61,21 +61,6 @@
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>cz.muni.fi.lasaris.sbms.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
	
Loading