You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2010/09/13 22:25:06 UTC
svn commit: r996679 - in /karaf/trunk: assembly/src/main/filtered-resources/
features/ features/encryption/ jaas/
jaas/config/src/main/java/org/apache/karaf/jaas/config/impl/ jaas/jasypt/
jaas/jasypt/src/ jaas/jasypt/src/main/ jaas/jasypt/src/main/java...
Author: jbonofre
Date: Mon Sep 13 20:25:05 2010
New Revision: 996679
URL: http://svn.apache.org/viewvc?rev=996679&view=rev
Log:
[KARAF-34] Move jasypt bundle from feature to jaas module. Modify Config JaasRealm to add the BundleContext in the options map. Use the encryption servce in the AbstractKarafLoginModule.
Added:
karaf/trunk/jaas/jasypt/
karaf/trunk/jaas/jasypt/pom.xml (with props)
karaf/trunk/jaas/jasypt/src/
karaf/trunk/jaas/jasypt/src/main/
karaf/trunk/jaas/jasypt/src/main/java/
karaf/trunk/jaas/jasypt/src/main/java/org/
karaf/trunk/jaas/jasypt/src/main/java/org/apache/
karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/
karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/
karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/jasypt/
karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/jasypt/impl/
karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryption.java (with props)
karaf/trunk/jaas/jasypt/src/main/resources/
karaf/trunk/jaas/jasypt/src/main/resources/OSGI-INF/
karaf/trunk/jaas/jasypt/src/main/resources/OSGI-INF/blueprint/
karaf/trunk/jaas/jasypt/src/main/resources/OSGI-INF/blueprint/karaf-jaas-jasypt.xml (with props)
karaf/trunk/jaas/jasypt/src/test/
karaf/trunk/jaas/jasypt/src/test/java/
karaf/trunk/jaas/jasypt/src/test/java/org/
karaf/trunk/jaas/jasypt/src/test/java/org/apache/
karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/
karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/
karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/jasypt/
karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/jasypt/impl/
karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryptionTest.java (with props)
Removed:
karaf/trunk/features/encryption/
Modified:
karaf/trunk/assembly/src/main/filtered-resources/features.xml
karaf/trunk/features/pom.xml
karaf/trunk/jaas/config/src/main/java/org/apache/karaf/jaas/config/impl/Config.java
karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/AbstractKarafLoginModule.java
karaf/trunk/jaas/pom.xml
Modified: karaf/trunk/assembly/src/main/filtered-resources/features.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/assembly/src/main/filtered-resources/features.xml?rev=996679&r1=996678&r2=996679&view=diff
==============================================================================
--- karaf/trunk/assembly/src/main/filtered-resources/features.xml (original)
+++ karaf/trunk/assembly/src/main/filtered-resources/features.xml Mon Sep 13 20:25:05 2010
@@ -98,6 +98,6 @@
<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-codec/${commons-codec.bundle.version}</bundle>
<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt/${jasypt.bundle.version}</bundle>
- <bundle>mvn:org.apache.karaf.features/org.apache.karaf.features.encryption/${project.version}</bundle>
+ <bundle>mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.jasypt/${project.version}</bundle>
</feature>
</features>
Modified: karaf/trunk/features/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/features/pom.xml?rev=996679&r1=996678&r2=996679&view=diff
==============================================================================
--- karaf/trunk/features/pom.xml (original)
+++ karaf/trunk/features/pom.xml Mon Sep 13 20:25:05 2010
@@ -37,7 +37,6 @@
<module>command</module>
<module>management</module>
<module>obr</module>
- <module>encryption</module>
</modules>
</project>
Modified: karaf/trunk/jaas/config/src/main/java/org/apache/karaf/jaas/config/impl/Config.java
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/config/src/main/java/org/apache/karaf/jaas/config/impl/Config.java?rev=996679&r1=996678&r2=996679&view=diff
==============================================================================
--- karaf/trunk/jaas/config/src/main/java/org/apache/karaf/jaas/config/impl/Config.java (original)
+++ karaf/trunk/jaas/config/src/main/java/org/apache/karaf/jaas/config/impl/Config.java Mon Sep 13 20:25:05 2010
@@ -76,6 +76,10 @@ public class Config implements JaasRealm
AppConfigurationEntry[] entries = new AppConfigurationEntry[modules.length];
for (int i = 0; i < modules.length; i++) {
Map<String,Object> options = new HashMap<String,Object>();
+ // put the bundle context in the options map
+ // it's required to be able to use the encryption service
+ // in the AbstractKarafLoginModule
+ options.put(BundleContext.class.getName(), bundleContext);
if (modules[i].getOptions() != null) {
for (Map.Entry e : modules[i].getOptions().entrySet()) {
options.put(e.getKey().toString(), e.getValue());
Added: karaf/trunk/jaas/jasypt/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/jasypt/pom.xml?rev=996679&view=auto
==============================================================================
--- karaf/trunk/jaas/jasypt/pom.xml (added)
+++ karaf/trunk/jaas/jasypt/pom.xml Mon Sep 13 20:25:05 2010
@@ -0,0 +1,90 @@
+<?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">
+
+ <!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.karaf.jaas</groupId>
+ <artifactId>jaas</artifactId>
+ <version>2.0.1-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.apache.karaf.jaas</groupId>
+ <artifactId>org.apache.karaf.jaas.jasypt</artifactId>
+ <packaging>bundle</packaging>
+ <version>2.0.1-SNAPSHOT</version>
+ <name>Apache Karaf :: JAAS Jasypt Encryption</name>
+
+ <description>
+ This bundle provides the default encryption implementation for password
+ encryption used in login module.
+ This implementation uses Jasypt encryption tool.
+ </description>
+
+ <properties>
+ <appendedResourcesDirectory>${basedir}/../../etc/appended-resources</appendedResourcesDirectory>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.karaf.jaas</groupId>
+ <artifactId>org.apache.karaf.jaas.modules</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.jasypt</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.ibm.icu</groupId>
+ <artifactId>icu4j</artifactId>
+ <version>3.4.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+ <Export-Package>
+ ${project.artifactId}*;version=${project.version}
+ </Export-Package>
+ <Import-Package>
+ !${project.artifactId}*,
+ *
+ </Import-Package>
+ <Private-Package>org.apache.karaf.jaas.encryption.impl</Private-Package>
+ <_versionpolicy>${bnd.version.policy}</_versionpolicy>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
Propchange: karaf/trunk/jaas/jasypt/pom.xml
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryption.java
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryption.java?rev=996679&view=auto
==============================================================================
--- karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryption.java (added)
+++ karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryption.java Mon Sep 13 20:25:05 2010
@@ -0,0 +1,66 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+package org.apache.karaf.jaas.jasypt.impl;
+
+import org.apache.karaf.jaas.modules.Encryption;
+import org.jasypt.util.password.ConfigurablePasswordEncryptor;
+
+/**
+ * <p>
+ * Jasypt implementation of the Encryption service.
+ * </p>
+ *
+ * @author jbonofre
+ */
+public class JasyptEncryption implements Encryption {
+
+ private ConfigurablePasswordEncryptor passwordEncryptor;
+
+ /**
+ * <p>
+ * Default constructor.
+ * </p>
+ */
+ public JasyptEncryption() {
+ this.passwordEncryptor = new ConfigurablePasswordEncryptor();
+ // set MD5 encryption algorithm by default
+ this.passwordEncryptor.setAlgorithm("MD5");
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.karaf.jaas.modules.Encryption#setAlgorithm(java.lang.String)
+ */
+ public void setAlgorithm(String algorithm) {
+ this.passwordEncryptor.setAlgorithm(algorithm);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.karaf.jaas.modules.Encryption#encryptPassword(java.lang.String)
+ */
+ public String encryptPassword(String plain) {
+ return this.passwordEncryptor.encryptPassword(plain);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.karaf.jaas.modules.Encryption#checkPassword(java.lang.String, java.lang.String)
+ */
+ public boolean checkPassword(String input, String password) {
+ return this.passwordEncryptor.checkPassword(input, password);
+ }
+
+}
Propchange: karaf/trunk/jaas/jasypt/src/main/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryption.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: karaf/trunk/jaas/jasypt/src/main/resources/OSGI-INF/blueprint/karaf-jaas-jasypt.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/jasypt/src/main/resources/OSGI-INF/blueprint/karaf-jaas-jasypt.xml?rev=996679&view=auto
==============================================================================
--- karaf/trunk/jaas/jasypt/src/main/resources/OSGI-INF/blueprint/karaf-jaas-jasypt.xml (added)
+++ karaf/trunk/jaas/jasypt/src/main/resources/OSGI-INF/blueprint/karaf-jaas-jasypt.xml Mon Sep 13 20:25:05 2010
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+
+ <bean id="encryption" class="org.apache.karaf.jaas.jasypt.impl.JasyptEncryption" />
+
+ <service ref="encryption" interface="org.apache.karaf.jaas.modules.Encryption" />
+
+</blueprint>
\ No newline at end of file
Propchange: karaf/trunk/jaas/jasypt/src/main/resources/OSGI-INF/blueprint/karaf-jaas-jasypt.xml
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryptionTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryptionTest.java?rev=996679&view=auto
==============================================================================
--- karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryptionTest.java (added)
+++ karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryptionTest.java Mon Sep 13 20:25:05 2010
@@ -0,0 +1,52 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+package org.apache.karaf.jaas.jasypt.impl;
+
+import junit.framework.TestCase;
+
+/**
+ * <p>
+ * Test <code>JasyptEncryption</code>.
+ * </p>
+ *
+ * @author jbonofre
+ */
+public class JasyptEncryptionTest extends TestCase {
+
+ private JasyptEncryption encryption;
+
+ /*
+ * (non-Javadoc)
+ * @see junit.framework.TestCase#setUp()
+ */
+ public void setUp() {
+ this.encryption = new JasyptEncryption();
+ this.encryption.setAlgorithm("MD5");
+ }
+
+ /**
+ * <p>
+ * Test <code>checkPassword()</p> method.
+ * </p>
+ *
+ * @throws Exception in case of test error.
+ */
+ public void testCheckPassword() throws Exception {
+ String password = this.encryption.encryptPassword("test");
+
+ assertEquals(true, this.encryption.checkPassword("test", password));
+ }
+
+}
Propchange: karaf/trunk/jaas/jasypt/src/test/java/org/apache/karaf/jaas/jasypt/impl/JasyptEncryptionTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/AbstractKarafLoginModule.java
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/AbstractKarafLoginModule.java?rev=996679&r1=996678&r2=996679&view=diff
==============================================================================
--- karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/AbstractKarafLoginModule.java (original)
+++ karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/AbstractKarafLoginModule.java Mon Sep 13 20:25:05 2010
@@ -24,6 +24,9 @@ import javax.security.auth.callback.Call
import javax.security.auth.login.LoginException;
import javax.security.auth.spi.LoginModule;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
/**
* <p>
@@ -46,6 +49,9 @@ public abstract class AbstractKarafLogin
/** define the encryption algorithm to use to encrypt password */
protected String encryption;
+
+ /** the bundle context is required to use the encryption service */
+ protected BundleContext bundleContext;
public boolean commit() throws LoginException {
RolePolicy policy = RolePolicy.getPolicy(rolePolicy);
@@ -68,6 +74,8 @@ public abstract class AbstractKarafLogin
this.roleDiscriminator = (String) options.get("roleDiscriminator");
this.debug = Boolean.parseBoolean((String) options.get("debug"));
this.encryption = (String) options.get("encryption");
+ // the bundle context is set in the Config JaasRealm by default
+ this.bundleContext = (BundleContext) options.get(BundleContext.class.getName());
}
/**
@@ -82,8 +90,23 @@ public abstract class AbstractKarafLogin
if (this.encryption == null) {
return password;
}
- // TODO call the encryption service
- return null;
+ // lookup the encryption service reference
+ ServiceReference encryptionServiceReference = bundleContext.getServiceReference(Encryption.class.getName());
+ if (encryptionServiceReference == null) {
+ throw new IllegalStateException("Encryption service not found. Please install the Karaf encryption feature.");
+ }
+ // get the encryption service implementation
+ Encryption encryptionService = (Encryption) bundleContext.getService(encryptionServiceReference);
+ if (encryptionService == null) {
+ throw new IllegalStateException("Encryption service not found. Please install the Karaf encryption feature.");
+ }
+ // set the encryption algorithm
+ encryptionService.setAlgorithm(encryption);
+ // encrypt the password
+ String encryptedPassword = encryptionService.encryptPassword(password);
+ // release the encryption service reference
+ bundleContext.ungetService(encryptionServiceReference);
+ return encryptedPassword;
}
/**
@@ -99,8 +122,23 @@ public abstract class AbstractKarafLogin
if (this.encryption == null) {
return input.equals(password);
}
- // TODO call the encryption service
- return true;
+ // lookup the encryption service reference
+ ServiceReference encryptionServiceReference = bundleContext.getServiceReference(Encryption.class.getName());
+ if (encryptionServiceReference == null) {
+ throw new IllegalStateException("Encryption service not found. Please install the Karaf encryption feature.");
+ }
+ // get the encryption service implementation
+ Encryption encryptionService = (Encryption) bundleContext.getService(encryptionServiceReference);
+ if (encryptionService == null) {
+ throw new IllegalStateException("Encryption service not found. Please install the Karaf encryption feature.");
+ }
+ // set the encryption algorithm
+ encryptionService.setAlgorithm(encryption);
+ // checks passwords
+ boolean equals = encryptionService.checkPassword(input, password);
+ // release the encryption service reference
+ bundleContext.ungetService(encryptionServiceReference);
+ return equals;
}
}
Modified: karaf/trunk/jaas/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/pom.xml?rev=996679&r1=996678&r2=996679&view=diff
==============================================================================
--- karaf/trunk/jaas/pom.xml (original)
+++ karaf/trunk/jaas/pom.xml Mon Sep 13 20:25:05 2010
@@ -36,6 +36,7 @@
<module>boot</module>
<module>config</module>
<module>modules</module>
+ <module>jasypt</module>
</modules>
</project>