Overview
The following set up will allow you to work on the Raft3 app in your local environment (http://localhost) by using a node.js proxy server to connect to the dev servers for authentication and services.
Note: This environment will not work until you have a valid Kerberos account and have been created as a Raft user.
Installation of Required Software
Download and install node from here: http://nodejs.org/download/ (doc written using V0.10.16)
Checkout Raft3 code
Create a new project in PHPStorm (or your favorite IDE) and pull the code.
svn root: svn+ssh://svn.mit.edu/mitbi
project: php/trunk
You'll get more than just the front end app but this allows us to be consistent when merging
Create a local server directory
The app lives in the public directory (trunk/zend_framework/public/)
In this public directory you need to create a copy of the existing server directory. Call it local_server and configure it so svn will ignore it (we want this to remain locally on your machine only).
Certificate Installation
These certificates are used to proxy to the test server using your credentials.
- Go to Firefox/Preferences/Advanced/Encryption/View Certificates and click on your certificate and click the Backup button. In the Save Dialog box, save your certificate as a pks12 (.p12) file in your server directory (neatest if you save it in a cert subdirectory).
- Using your terminal, CD to the cert subdirectory (/zend_framework/public/local_server/certs).
- Create a .pem file: openssl pkcs12 -nodes -in yourcert.p12 -out yourcert.pem
Now remove the password from your .pem file this way: openssl rsa -in yourcert.pem -out yourcertNoPassword.pem
From the Authorities tab in FF, e
xport and save the "MIT Certification Authority..." certification to a file name mitCA.pem in /zend_framework/public/local_server
/certs folder
.
Configure auth.json
Edit /zend_framework/public/local_server/auth_yours.json and rename this file to auth_me.json or whatever you like:
{ "what_do_I_do_with_this_file": "Rename this file to auth_me.json or whatever you like then reference it on the command line with the '-a' parameter", "keyFile": ".pem file containing your cert with password removed", "certsFile": ".pem file containing your key", "caFile": "certs/mitCA.pem" }
Install Required Node Module Dependencies
- Navigate to /zend_framework/public/local_server/
- Execute npm (node package manager) which will read the package.json file and install the listed dependencies.
- npm install
Testing The Local Server
- Navigate to zend_framework/public/local_server
- Start the server via command: node bin/mitserv.js -a auth_me.json
- In a browser, navigate to http:/localhost:8080/app.html
Possible Issues
- Issue:
- Proxy starts but errors related to .pem files seen
- Fix:
- Make sure you did not mix up the key and cert files in your auth.json file.
- Issue:
- Proxy starts but no response is returned at all
- Fix:
- Make sure you have been added everywhere required to be a valid Raft user (Amon knows)
- Issue:
- Proxy starting but never returning
- Fix:
- Make sure you're connecting using either the MIT N or MIT SECURE N wireless network
- Issue:
- Seeing GET http://localhost:8080/rest/v1/user/auth 403 (Forbidden)
- With body content including: "SyntaxError: Unexpected token ILLEGAL"
- Fix:
- The Apache server needs to include the username
- Issue:
- Error: EBADF, Bad file descriptor './certs/hij1nx.pem'
- Fix:
- The certs are missing and/or misconfigured. See the section on installing certificates.