summaryrefslogtreecommitdiffstats
path: root/daemons/ipa-slapi-plugins
diff options
context:
space:
mode:
authorAlexander Bokovoy <abokovoy@redhat.com>2016-06-06 11:41:46 +0300
committerMartin Basti <mbasti@redhat.com>2016-06-11 17:25:50 +0200
commitbb75f5a5836ea011b8920f8bb8d58c1f4cd9b4c8 (patch)
tree108fedb3d09df8b2030e66702d3d3c2b4aaf701f /daemons/ipa-slapi-plugins
parentb506fd178edbf1553ca581c44ac6697f88ead125 (diff)
downloadfreeipa-bb75f5a5836ea011b8920f8bb8d58c1f4cd9b4c8.tar.gz
freeipa-bb75f5a5836ea011b8920f8bb8d58c1f4cd9b4c8.tar.xz
freeipa-bb75f5a5836ea011b8920f8bb8d58c1f4cd9b4c8.zip
adtrust: support UPNs for trusted domain users
Add support for additional user name principal suffixes from trusted Active Directory forests. UPN suffixes are property of the forest and as such are associated with the forest root domain. FreeIPA stores UPN suffixes as ipaNTAdditionalSuffixes multi-valued attribute of ipaNTTrustedDomain object class. In order to look up UPN suffixes, netr_DsRGetForestTrustInformation LSA RPC call is used instead of netr_DsrEnumerateDomainTrusts. For more details on UPN and naming in Active Directory see https://technet.microsoft.com/en-us/library/cc739093%28v=ws.10%29.aspx https://fedorahosted.org/freeipa/ticket/5354 Reviewed-By: Martin Babinsky <mbabinsk@redhat.com>
Diffstat (limited to 'daemons/ipa-slapi-plugins')
-rw-r--r--daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
index 84b1b9af4..e629247fd 100644
--- a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
+++ b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c
@@ -1023,8 +1023,13 @@ static int handle_name_request(struct ipa_extdom_ctx *ctx,
char *buf = NULL;
struct sss_nss_kv *kv_list = NULL;
- ret = asprintf(&fq_name, "%s%c%s", name, SSSD_DOMAIN_SEPARATOR,
- domain_name);
+ if (strchr(name, SSSD_DOMAIN_SEPARATOR) == NULL) {
+ ret = asprintf(&fq_name, "%s%c%s", name, SSSD_DOMAIN_SEPARATOR,
+ domain_name);
+ } else {
+ /* SSSD_DOMAIN_SEPARATOR already present, assume UPN */
+ ret = asprintf(&fq_name, "%s", name);
+ }
if (ret == -1) {
ret = LDAP_OPERATIONS_ERROR;
set_err_msg(req, "Failed to create fully qualified name");