Added support for the ipsec.conf aaa_identity keyword

This commit is contained in:
Martin Willi
2010-08-31 17:52:52 +02:00
parent 81137552e5
commit 64d7b0733f
9 changed files with 18 additions and 0 deletions
@@ -502,6 +502,11 @@ static auth_cfg_t *build_auth_cfg(private_stroke_config_t *this,
} }
cfg->add(cfg, AUTH_RULE_EAP_IDENTITY, identity); cfg->add(cfg, AUTH_RULE_EAP_IDENTITY, identity);
} }
if (msg->add_conn.aaa_identity)
{
cfg->add(cfg, AUTH_RULE_AAA_IDENTITY,
identification_create_from_string(msg->add_conn.aaa_identity));
}
} }
else else
{ {
@@ -180,11 +180,13 @@ static void stroke_add_conn(private_stroke_socket_t *this, stroke_msg_t *msg)
pop_end(msg, "left", &msg->add_conn.me); pop_end(msg, "left", &msg->add_conn.me);
pop_end(msg, "right", &msg->add_conn.other); pop_end(msg, "right", &msg->add_conn.other);
pop_string(msg, &msg->add_conn.eap_identity); pop_string(msg, &msg->add_conn.eap_identity);
pop_string(msg, &msg->add_conn.aaa_identity);
pop_string(msg, &msg->add_conn.algorithms.ike); pop_string(msg, &msg->add_conn.algorithms.ike);
pop_string(msg, &msg->add_conn.algorithms.esp); pop_string(msg, &msg->add_conn.algorithms.esp);
pop_string(msg, &msg->add_conn.ikeme.mediated_by); pop_string(msg, &msg->add_conn.ikeme.mediated_by);
pop_string(msg, &msg->add_conn.ikeme.peerid); pop_string(msg, &msg->add_conn.ikeme.peerid);
DBG2(DBG_CFG, " eap_identity=%s", msg->add_conn.eap_identity); DBG2(DBG_CFG, " eap_identity=%s", msg->add_conn.eap_identity);
DBG2(DBG_CFG, " aaa_identity=%s", msg->add_conn.aaa_identity);
DBG2(DBG_CFG, " ike=%s", msg->add_conn.algorithms.ike); DBG2(DBG_CFG, " ike=%s", msg->add_conn.algorithms.ike);
DBG2(DBG_CFG, " esp=%s", msg->add_conn.algorithms.esp); DBG2(DBG_CFG, " esp=%s", msg->add_conn.algorithms.esp);
DBG2(DBG_CFG, " mediation=%s", msg->add_conn.ikeme.mediation ? "yes" : "no"); DBG2(DBG_CFG, " mediation=%s", msg->add_conn.ikeme.mediation ? "yes" : "no");
+1
View File
@@ -208,6 +208,7 @@ static const token_info_t token_info[] =
{ ARG_MISC, 0, NULL /* KW_AUTHBY */ }, { ARG_MISC, 0, NULL /* KW_AUTHBY */ },
{ ARG_MISC, 0, NULL /* KW_EAP */ }, { ARG_MISC, 0, NULL /* KW_EAP */ },
{ ARG_STR, offsetof(starter_conn_t, eap_identity), NULL }, { ARG_STR, offsetof(starter_conn_t, eap_identity), NULL },
{ ARG_STR, offsetof(starter_conn_t, aaa_identity), NULL },
{ ARG_MISC, 0, NULL /* KW_MOBIKE */ }, { ARG_MISC, 0, NULL /* KW_MOBIKE */ },
{ ARG_MISC, 0, NULL /* KW_FORCEENCAPS */ }, { ARG_MISC, 0, NULL /* KW_FORCEENCAPS */ },
{ ARG_TIME, offsetof(starter_conn_t, sa_ike_life_seconds), NULL }, { ARG_TIME, offsetof(starter_conn_t, sa_ike_life_seconds), NULL },
+1
View File
@@ -117,6 +117,7 @@ struct starter_conn {
u_int32_t eap_type; u_int32_t eap_type;
u_int32_t eap_vendor; u_int32_t eap_vendor;
char *eap_identity; char *eap_identity;
char *aaa_identity;
char *xauth_identity; char *xauth_identity;
lset_t policy; lset_t policy;
time_t sa_ike_life_seconds; time_t sa_ike_life_seconds;
+5
View File
@@ -228,6 +228,11 @@ Unless otherwise noted, for a connection to work,
in general it is necessary for the two ends to agree exactly in general it is necessary for the two ends to agree exactly
on the values of these parameters. on the values of these parameters.
.TP 14 .TP 14
.B aaa_identity
defines the identity of the AAA backend used during IKEv2 EAP authentication.
This is required if the EAP client uses a method that verifies the server
identity (such as EAP-TLS), but it does not match the IKEv2 gateway identity.
.TP
.B ah .B ah
AH authentication algorithm to be used AH authentication algorithm to be used
for the connection, e.g. for the connection, e.g.
+1
View File
@@ -71,6 +71,7 @@ typedef enum {
KW_AUTHBY, KW_AUTHBY,
KW_EAP, KW_EAP,
KW_EAP_IDENTITY, KW_EAP_IDENTITY,
KW_AAA_IDENTITY,
KW_MOBIKE, KW_MOBIKE,
KW_FORCEENCAPS, KW_FORCEENCAPS,
KW_IKELIFETIME, KW_IKELIFETIME,
+1
View File
@@ -49,6 +49,7 @@ force_keepalive, KW_FORCE_KEEPALIVE
virtual_private, KW_VIRTUAL_PRIVATE virtual_private, KW_VIRTUAL_PRIVATE
eap, KW_EAP eap, KW_EAP
eap_identity, KW_EAP_IDENTITY eap_identity, KW_EAP_IDENTITY
aaa_identity, KW_AAA_IDENTITY
mobike, KW_MOBIKE mobike, KW_MOBIKE
forceencaps, KW_FORCEENCAPS forceencaps, KW_FORCEENCAPS
pkcs11module, KW_PKCS11MODULE pkcs11module, KW_PKCS11MODULE
+1
View File
@@ -223,6 +223,7 @@ int starter_stroke_add_conn(starter_config_t *cfg, starter_conn_t *conn)
msg.add_conn.eap_type = conn->eap_type; msg.add_conn.eap_type = conn->eap_type;
msg.add_conn.eap_vendor = conn->eap_vendor; msg.add_conn.eap_vendor = conn->eap_vendor;
msg.add_conn.eap_identity = push_string(&msg, conn->eap_identity); msg.add_conn.eap_identity = push_string(&msg, conn->eap_identity);
msg.add_conn.aaa_identity = push_string(&msg, conn->aaa_identity);
if (conn->policy & POLICY_TUNNEL) if (conn->policy & POLICY_TUNNEL)
{ {
+1
View File
@@ -232,6 +232,7 @@ struct stroke_msg_t {
u_int32_t eap_type; u_int32_t eap_type;
u_int32_t eap_vendor; u_int32_t eap_vendor;
char *eap_identity; char *eap_identity;
char *aaa_identity;
int mode; int mode;
int mobike; int mobike;
int force_encap; int force_encap;