Name | Modified | Size | Downloads / Week |
---|---|---|---|
README.txt | 2012-01-01 | 4.3 kB | |
xdc.war | 2012-01-01 | 29.8 kB | |
xdc-utils-src.zip | 2012-01-01 | 13.6 kB | |
xdc@rabinovich.name.zip | 2012-01-01 | 53.9 kB | |
Totals: 4 Items | 101.7 kB | 0 |
The Safe Cross-Domain (XDC) Cookies for HTTP Project ==================================================== I. Bill of materials ==================== - The Web app (read.jsp and write.jsp). - The utilities to generate XDC channel certificates and XDC authorizations. - The Firefox extension (xdc@rabinovich.name). Tested with Firefox 6 and 7 on Windows 7. (To try with newer versions of Firefox modify attribute maxVersion file install.rdf.) The Java code was built using Java 1.6.0_27. - The Bouncy Castle libraries can be downloaded from http://bouncycastle.org/ (version 1.46). They are NOT redistributed with the software. II. Instructions ================ 0. Download the Bouncy Castle (BC) JARs and build xdc-support.jar. Install the BC JARs as needed to run the utilities. Copy the BC JARs into the java directory of the Firefox extension. Copy the BC JARs into the WEB-INF/lib directory of the Web application. 1. Create a channel cert in a file java -cp bcmail-jdk16-146.jar;bcprov-ext-jdk16-146.jar;bcprov-jdk16-146.jar;xdc-support.jar name.rabinovich.xdc.util.XdcChannelCertGenerator -o <owner-X500-name> -s <serial #> -b <not-before> (format: MM/dd/yyyy HH:mm:ss z) -a <not-after> (format: MM/dd/yyyy HH:mm:ss z) -A <channel-name-algorithm-id> (legal values: 1.3.14.3.2.26 (sha-1), 2.16.840.1.101.3.4.2.1 (sha-256), 2.16.840.1.101.3.4.2.3 (sha-512)) -d <description> [-S] (secure?) -c <output-file-cert> -k <output-file-key> -p <output-file-key-password> 2. Create a channel cert ready for transport (run, and copy 'Encoded cert' from the output) java -cp bcmail-jdk16-146.jar;bcprov-ext-jdk16-146.jar;bcprov-jdk16-146.jar;xdc-support.jar name.rabinovich.xdc.util.XdcChannelCert -f <xdc-channel-cert-file> 3. Create an authz cert in a file java -cp bcmail-jdk16-146.jar;bcprov-ext-jdk16-146.jar;bcprov-jdk16-146.jar;xdc-support.jar name.rabinovich.xdc.util.XdcAuthzCertGenerator -c <owner-cert-file> -k <owner-key-file> -p <owner-key-file-password> -s <serial #> -b <not-before> (format: MM/dd/yyyy HH:mm:ss z) -a <not-after> (format: MM/dd/yyyy HH:mm:ss z) [-r] (include read permission?) [-w] (include write permission?) [-i] (include channel certificate?) [-C <server-SSL-cert-file>] (for secure channels) (-D <dns-name> | I <ip-address>) -d <description> -f <output-file> 4. Create an authz cert ready for transport (run, and copy 'Encoded cert' from the output) java -cp bcmail-jdk16-146.jar;bcprov-ext-jdk16-146.jar;bcprov-jdk16-146.jar;xdc-support.jar name.rabinovich.xdc.util.XdcAuthzCert -f <xdc-authz-file> 5. Configure Apache to respond to preflight requests 1) Eanble mod_rewrite and mod_headers 2) Configure globally or per virtual host RewriteEngine on RewriteCond %{REQUEST_METHOD} ^OPTIONS$ RewriteCond %{HTTP:Xdc-Info-Request} ^true$ RewriteRule .* - [E=XdcInfoRequest:true] Header add Xdc-Channel "<xdc-channel-cert>" env=XdcInfoRequest Header add Xdc-Authorization "<xdc-authz>" env=XdcInfoRequest Header add Xdc-Max-Age "<duration-in-seconds>" env=XdcInfoRequest Header add Xdc-Options "<dns-max-age=duration-in-seconds>" env=XdcInfoRequest 3) Escape every % with another %, so %20 will become %%20 6. Install the XDC extension (note: Firefox appears to mishandle jar: URLs so installing as an XPI file will most likely not work. Install as a directory) 1) Unzip the directory. Say, the root directory is D 2) In the default profile directory (on Windows 7 %APPDATA%\Mozilla\Firefox\Profiles\xxx.default\extensions) create a file with content D\ 7. To build the XPI (compact Firefox extension) file: 1) Unzip the ZIP file 2) Copy the BC files into the java directory 3) Re-zip the file renaming into xdc@rabinovich.name.xpi (or any other name with the extension .xpi). III. Misc ========= 1. XDC cookie attributes as currently implemented by the Web app and the extension: - channelName (base 64- and URL-encoded name) - name - value - notBefore (number of seconds since the Epoch) - notAfter (number of seconds since the Epoch) - description - isPersistent (true|false) 2. Please, send your feedback or questions to paul.rabinovich at exostar.com