d738b9
From 810e831592eeed8422197d9c8de237552645412f Mon Sep 17 00:00:00 2001
d738b9
From: Matt Rogers <mrogers@redhat.com>
d738b9
Date: Tue, 4 Apr 2017 16:54:56 -0400
d738b9
Subject: [PATCH] Add the client_name() kdcpreauth callback
d738b9
d738b9
Add a kdcpreauth callback to returns the canonicalized client principal.
d738b9
d738b9
ticket: 8570 (new)
d738b9
(cherry picked from commit a84f39ec30f3deeda7836da6e8b3d8dcf7a045b1)
d738b9
---
d738b9
 src/include/krb5/kdcpreauth_plugin.h | 6 ++++++
d738b9
 src/kdc/kdc_preauth.c                | 9 ++++++++-
d738b9
 2 files changed, 14 insertions(+), 1 deletion(-)
d738b9
d738b9
diff --git a/src/include/krb5/kdcpreauth_plugin.h b/src/include/krb5/kdcpreauth_plugin.h
d738b9
index 92aa5a5a5..fa4436b83 100644
d738b9
--- a/src/include/krb5/kdcpreauth_plugin.h
d738b9
+++ b/src/include/krb5/kdcpreauth_plugin.h
d738b9
@@ -232,6 +232,12 @@ typedef struct krb5_kdcpreauth_callbacks_st {
d738b9
                                  krb5_kdcpreauth_rock rock,
d738b9
                                  krb5_principal princ);
d738b9
 
d738b9
+    /*
d738b9
+     * Get an alias to the client DB entry principal (possibly canonicalized).
d738b9
+     */
d738b9
+    krb5_principal (*client_name)(krb5_context context,
d738b9
+                                  krb5_kdcpreauth_rock rock);
d738b9
+
d738b9
     /* End of version 4 kdcpreauth callbacks. */
d738b9
 
d738b9
 } *krb5_kdcpreauth_callbacks;
d738b9
diff --git a/src/kdc/kdc_preauth.c b/src/kdc/kdc_preauth.c
d738b9
index 0ce79c667..81d0b8cff 100644
d738b9
--- a/src/kdc/kdc_preauth.c
d738b9
+++ b/src/kdc/kdc_preauth.c
d738b9
@@ -591,6 +591,12 @@ match_client(krb5_context context, krb5_kdcpreauth_rock rock,
d738b9
     return match;
d738b9
 }
d738b9
 
d738b9
+static krb5_principal
d738b9
+client_name(krb5_context context, krb5_kdcpreauth_rock rock)
d738b9
+{
d738b9
+    return rock->client->princ;
d738b9
+}
d738b9
+
d738b9
 static struct krb5_kdcpreauth_callbacks_st callbacks = {
d738b9
     4,
d738b9
     max_time_skew,
d738b9
@@ -607,7 +613,8 @@ static struct krb5_kdcpreauth_callbacks_st callbacks = {
d738b9
     add_auth_indicator,
d738b9
     get_cookie,
d738b9
     set_cookie,
d738b9
-    match_client
d738b9
+    match_client,
d738b9
+    client_name
d738b9
 };
d738b9
 
d738b9
 static krb5_error_code