remove debugging statement
[moonshot.git] / mech_eap / README
index 1a3cb25..3cb2d50 100644 (file)
@@ -17,42 +17,88 @@ so not all features will be available.
 Installing
 ==========
 
+GSS mechglue
+------------
+
 When installing, be sure to edit $prefix/etc/gss/mech to register
 the EAP mechanisms. A sample configuration file is in this directory.
+You may need to specify an absolute path.
+
+RADIUS client library
+---------------------
 
 Make sure your RADIUS library is configured to talk to the server of
 your choice: see the example radsec.conf in this directory. If you
 want to use TCP or TLS, you'll need to run radsecproxy in front of
 your RADIUS server.
 
-On the RADIUS server side, you need to install dictionary.ukerna and
-include it from the main dictionary file (assuming it has a dictionary
-format compatible with FreeRADIUS).
+RADIUS server
+-------------
 
-If you want the acceptor be able to identify the user, the RADIUS
-server needs to echo back the EAP username from the inner tunnel;
-for privacy, mech_eap only sends the realm in the EAP Identity
-response. To configure this with FreeRADIUS, add:
+These instructions apply to FreeRADIUS only, which is downloadable
+from http://freeradius.org/. After configure, make, install, do the
+following:
 
-        update outer.reply {
-            User-Name = "%{request:User-Name}"
-        }
+On the RADIUS server side, you need to install dictionary.ukerna to
+$prefix/etc/raddb and include it from the main dictionary file, by
+adding:
+
+    $INCLUDE dictionary.ukerna
+
+to $prefix/etc/raddb/dictionary. Make sure these files are world-
+readable; they weren't in my installation.
 
-to $prefix/etc/raddb/sites-enabled/inner-tunnel, and ensure that
+Edit $prefix/etc/raddb/users to add your test user and password:
 
-    virtual_server = "inner-tunnel"
+    bob@PROJECT-MOONSHOT.ORG Cleartext-Password := secret
 
-is set in eap.conf for the desired EAP types. Other than that,
-configuration of FreeRADIUS should be identical for other NAS
-applications.
+Add an entry for your acceptor to $prefix/etc/raddb/clients.conf:
 
-To test the SAML assertion code path, you can place a fixed SAML
-assertion in the update reply block of the default configuration.
+    client somehost {
+        ipaddr = 127.0.0.1
+        secret = testing123
+        require_message_authenticator = yes
+    }
 
-        update reply {
-            SAML-AAA-Assertion = '<saml:Assertion ...'
-            SAML-AAA-Assertion += '...'
+Edit $prefix/etc/raddb/eap.conf and set:
+
+    eap {
+...
+        default_eap_type = ttls
+...
+        tls {
+            certdir = ...
+            cadir = ...
+            private_key_file = ...
+            certificate_file = ...
+        }
+        ttls {
+            default_eap_type = mschapv2
+            copy_request_to_tunnel = no
+            use_tunneled_reply = no
+            virtual_server = "inner-tunnel"
         }
+...
+    }
+
+to enable EAP-TTLS.
+
+If you want the acceptor be able to identify the user, the RADIUS
+server needs to echo back the EAP username from the inner tunnel;
+for privacy, mech_eap only sends the realm in the EAP Identity
+response. To configure this with FreeRADIUS, add:
+
+    update outer.reply {
+        User-Name = "%{request:User-Name}"
+    }
+
+If you want to add a SAML assertion, do this with "update reply"
+in $prefix/etc/raddb/sites-available/default:
+
+    update reply {
+        SAML-AAA-Assertion = '<saml:Assertion ...'
+        SAML-AAA-Assertion += '...'
+    }
 
 You'll need to split it into multiple lines because of the RADIUS
 attribute size limit.
@@ -66,7 +112,8 @@ appropriately (<host> is the name of the host running the server,
 not the RADIUS server).
 
 % gss-client -port 5555 -spnego -mech "{1 3 6 1 4 1 5322 22 1 18}" \
-  -user <user> -pass <pass> <host> host@<host> "Testing GSS EAP"
+  -user <user>@<realm> -pass <pass> <host> host@<host> \
+  "Testing GSS EAP"
 % gss-server -port 5555 -export host@<host>
 
 Note: for SASL you will be prompted for a username and password.
@@ -85,3 +132,16 @@ To test fast reauthentication support, add the following to
 This will store a Kerberos ticket for a GSS-EAP authenticated user
 in a credentials cache, which can then be used for re-authentication
 to the same acceptor. You must have a valid keytab configured.
+
+In this testing phase of Moonshot, it's also possible to store a
+default identity and credential in a file. The format consists of
+the string representation of the initiator identity and the password,
+separated by newlines. The default location of this file is
+.gss_eap_id in the user's home directory, however the GSSEAP_IDENTITY
+environment variable can be used to set an alternate location.
+
+You can also set a default realm in [appdefaults]; the Kerberos
+default realm is never used by mech_eap (or at least, that is the
+intention), so if unspecified you must always qualify names. It should
+generally not be necessary to specify this.
+