Authentication support in ODK services.
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 16 Oct 2020 08:53:32 +0000 (10:53 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 16 Oct 2020 08:53:32 +0000 (10:53 +0200)
knowledge/org.argeo.support.odk/OSGI-INF/odkFormListServlet.xml
knowledge/org.argeo.support.odk/OSGI-INF/odkFormServlet.xml
knowledge/org.argeo.support.odk/OSGI-INF/odkServletContext.xml [new file with mode: 0644]
knowledge/org.argeo.support.odk/OSGI-INF/odkSubmissionServlet.xml
knowledge/org.argeo.support.odk/bnd.bnd
knowledge/org.argeo.support.odk/build.properties
knowledge/org.argeo.support.odk/pom.xml
knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkServletContext.java [new file with mode: 0644]

index eebd14ebbf0a54603ad377cc3713dc9203f93062..852423b16a199c9103172e916433e691645f6a19 100644 (file)
@@ -4,6 +4,7 @@
    <service>
       <provide interface="javax.servlet.Servlet"/>
    </service>
-   <property name="osgi.http.whiteboard.servlet.pattern" type="String" value="/api/odk/formList"/>
+   <property name="osgi.http.whiteboard.servlet.pattern" type="String" value="/formList"/>
+   <property name="osgi.http.whiteboard.context.select" type="String" value="(osgi.http.whiteboard.context.name=odkServletContext)"/>
    <reference bind="addForm" cardinality="0..n" interface="org.argeo.support.odk.OdkForm" name="OdkForm" policy="dynamic" unbind="removeForm"/>
 </scr:component>
index c2cd89b1f0343819e0e7711abad6f3af2bbca96b..59d2de217fc8180378ccc2cbcb808df39547bc8c 100644 (file)
@@ -4,6 +4,7 @@
    <service>
       <provide interface="javax.servlet.Servlet"/>
    </service>
-   <property name="osgi.http.whiteboard.servlet.pattern" type="String" value="/api/odk/*.xml"/>
+   <property name="osgi.http.whiteboard.servlet.pattern" type="String" value="/*.xml"/>
+   <property name="osgi.http.whiteboard.context.select" type="String" value="(osgi.http.whiteboard.context.name=odkServletContext)"/>
    <reference bind="addForm" cardinality="0..n" interface="org.argeo.support.odk.OdkForm" name="OdkForm" policy="dynamic" unbind="removeForm"/>
 </scr:component>
diff --git a/knowledge/org.argeo.support.odk/OSGI-INF/odkServletContext.xml b/knowledge/org.argeo.support.odk/OSGI-INF/odkServletContext.xml
new file mode 100644 (file)
index 0000000..78b5b66
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init" deactivate="destroy" name="ODK Servlet Context">
+   <implementation class="org.argeo.support.odk.servlet.OdkServletContext"/>
+   <service>
+      <provide interface="org.osgi.service.http.context.ServletContextHelper"/>
+   </service>
+   <property name="osgi.http.whiteboard.context.name" type="String" value="odkServletContext"/>
+   <property name="osgi.http.whiteboard.context.path" type="String" value="/api/odk"/>
+</scr:component>
index 77fba5481d5fbc8d09c76cc7dccd402957111511..e9153b4b9f0b5788bca4dc693f0366e59c693583 100644 (file)
@@ -4,6 +4,7 @@
    <service>
       <provide interface="javax.servlet.Servlet"/>
    </service>
-   <property name="osgi.http.whiteboard.servlet.pattern" type="String" value="/api/odk/submission"/>
+   <property name="osgi.http.whiteboard.servlet.pattern" type="String" value="/submission"/>
+   <property name="osgi.http.whiteboard.context.select" type="String" value="(osgi.http.whiteboard.context.name=odkServletContext)"/>
    <property name="osgi.http.whiteboard.servlet.multipart.enabled" type="String" value="true"/>
 </scr:component>
index 9291447f5712d1250f3a853274de2da139464534..9db4e0c84b83475b492f88a7272780c50e0cd3e6 100644 (file)
@@ -1,5 +1,9 @@
+Import-Package:\
+org.osgi.service.http.context,\
+*
 
 Service-Component:\
+OSGI-INF/odkServletContext.xml,\
 OSGI-INF/odkFormListServlet.xml,\
 OSGI-INF/odkFormServlet.xml,\
 OSGI-INF/odkSubmissionServlet.xml
index 6210e849b591d26fa9e17057ad3e8d09511917b6..1cdf3dd1edb5cd21204b6fed1ed4c22df4a405d1 100644 (file)
@@ -1,5 +1,6 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               OSGI-INF/
+               OSGI-INF/,\
+               OSGI-INF/odkServletContext.xml
 source.. = src/
index ec62f620516406d5e00951e486aea43335614a43..26177c91d3ad6278346f8db2a0376da3591c2306 100644 (file)
@@ -15,7 +15,7 @@
        <dependencies>
                <dependency>
                        <groupId>org.argeo.commons</groupId>
-                       <artifactId>org.argeo.util</artifactId>
+                       <artifactId>org.argeo.cms</artifactId>
                        <version>${version.argeo-commons}</version>
                </dependency>
        </dependencies>
diff --git a/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkServletContext.java b/knowledge/org.argeo.support.odk/src/org/argeo/support/odk/servlet/OdkServletContext.java
new file mode 100644 (file)
index 0000000..2c37edc
--- /dev/null
@@ -0,0 +1,18 @@
+package org.argeo.support.odk.servlet;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.argeo.cms.servlet.PrivateWwwAuthServletContext;
+
+public class OdkServletContext extends PrivateWwwAuthServletContext {
+
+       @Override
+       protected void askForWwwAuth(HttpServletRequest request, HttpServletResponse response) {
+               super.askForWwwAuth(request, response);
+               response.setHeader("X-OpenRosa-Version", "1.0");
+               response.setDateHeader("Date", System.currentTimeMillis());
+
+       }
+
+}