From: Luke Howard Date: Wed, 2 Mar 2011 05:46:08 +0000 (+1100) Subject: Sent @REALM in EAP identity response X-Git-Tag: vm/20110310~45 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.orig;a=commitdiff_plain;h=bf6ac9b981bc90596a416160e922a204fb0e32c5 Sent @REALM in EAP identity response --- diff --git a/README b/README index 978af55..5ec6228 100644 --- a/README +++ b/README @@ -24,9 +24,30 @@ Make sure your RADIUS library is configured to talk to the server of your choice: see the example radsec.conf in this directory. On the RADIUS server side, you need to install dictionary.ukerna and -include it from the main dictionary file. Your authentication policy -also needs to echo the EAP username back to the acceptor if you want -the acceptor to be able to identify the initiator. +include it from the main dictionary file. + +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}" + } + +to /etc/raddb/sites-enabled/inner-tunnel, and make sure that + + virtual_server = "inner-tunnel" + +is set in eap.conf for the EAP types being used. + +To test the SAML assertion code path, you can place a fixed SAML +assertion in the update reply block of the default configuration. + + update reply { + SAML-AAA-Assertion = 'initiatorCtx.eapPeerConfig; krb5_error_code code; - char *identity; + char *identity, *anonymousIdentity; eapPeerConfig->identity = NULL; eapPeerConfig->identity_len = 0; @@ -243,8 +243,14 @@ peerConfigInit(OM_uint32 *minor, return GSS_S_FAILURE; } + anonymousIdentity = strchr(identity, '@'); + if (anonymousIdentity == NULL) + anonymousIdentity = ""; + eapPeerConfig->identity = (unsigned char *)identity; eapPeerConfig->identity_len = strlen(identity); + eapPeerConfig->anonymous_identity = (unsigned char *)anonymousIdentity; + eapPeerConfig->anonymous_identity_len = strlen(anonymousIdentity); eapPeerConfig->password = (unsigned char *)cred->password.value; eapPeerConfig->password_len = cred->password.length;