Bug 1753371 - Names of domains from a trusted forest should be compared case-insentive
Summary: Names of domains from a trusted forest should be compared case-insentive
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: ipa
Version: 8.4
Hardware: Unspecified
OS: Unspecified
high
unspecified
Target Milestone: rc
: 8.0
Assignee: Florence Blanc-Renaud
QA Contact: ipa-qe
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-09-18 18:10 UTC by Sumit Bose
Modified: 2023-08-14 05:47 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker FREEIPA-6863 0 None None None 2021-09-21 11:30:02 UTC

Description Sumit Bose 2019-09-18 18:10:43 UTC
Description of problem:
If the AD forest root has a mix case name the this is preserved for the trust object. It looks like netr_DsRGetForestTrustInformation returns this name in all lower case, which is ok since DNS names are case-insensitive.

Unfortunately there is a case-sensitive comparison in fetch_domains():

    for t in domains.entries:
        if t.type == lsa.LSA_FOREST_TRUST_DOMAIN_INFO:
            tname = unicode(t.forest_trust_data.dns_domain_name.string)
            if tname == trustdomain:            <<<<<<<<<<<<<<<<<<<<<<<<<<
                continue
            result['domains'][tname] = {
                'cn': tname,
                'ipantflatname': unicode(
                    t.forest_trust_data.netbios_domain_name.string),
                'ipanttrusteddomainsid': unicode(
                    t.forest_trust_data.domain_sid)
            }
        elif t.type == lsa.LSA_FOREST_TRUST_TOP_LEVEL_NAME:
            tname = unicode(t.forest_trust_data.string)
            if tname == trustdomain:
                

and as a result the forest root is added a second time as forest member which casuse all kind of unexpected behavior.

Comment 1 Christian Heimes 2019-09-18 21:37:02 UTC
Since it's DNS and the scope of DNS names is limited, a comparison of lower() variant is sufficient. It would be better to use dns.name.Name objects instead of raw strings as they know how to compare DNS names properly.

Comment 5 Florence Blanc-Renaud 2022-05-31 19:20:47 UTC
This issue does not seem to happen any more. I configured an AD DC with name aD.test, then added the trust using
# ipa trust-add --type=ad  ad.test --admin Administrator --password --two-way true

and checked the trustdomains with
# ipa trustdomain-find ad.test
  Domain name: aD.test
  Domain NetBIOS name: AD
  Domain Security Identifier: S-1-5-21-2256093702-2536795054-3866081203
  Domain enabled: True

Only one occurrence is returned, preserving the original mixed case.

The debug logs show that netr_DsRGetForestTrustInformation returns the name keeping the original case.

@sbose are there some config steps I am missing in order to reproduce the issue? I am using our idm-ci playbook prep/win-domain-setup.yaml which calls Install-ADDSForest -DomainName aD.test ... on a host named root-dc.aD.test.

Comment 6 Sumit Bose 2022-06-01 06:53:30 UTC
(In reply to Florence Blanc-Renaud from comment #5)
> This issue does not seem to happen any more. I configured an AD DC with name
> aD.test, then added the trust using
> # ipa trust-add --type=ad  ad.test --admin Administrator --password
> --two-way true
> 
> and checked the trustdomains with
> # ipa trustdomain-find ad.test
>   Domain name: aD.test
>   Domain NetBIOS name: AD
>   Domain Security Identifier: S-1-5-21-2256093702-2536795054-3866081203
>   Domain enabled: True
> 
> Only one occurrence is returned, preserving the original mixed case.
> 
> The debug logs show that netr_DsRGetForestTrustInformation returns the name
> keeping the original case.
> 
> @sbose are there some config steps I am missing in order to
> reproduce the issue? I am using our idm-ci playbook
> prep/win-domain-setup.yaml which calls Install-ADDSForest -DomainName
> aD.test ... on a host named root-dc.aD.test.

Hi,

no, the steps are looking good. I guess netr_DsRGetForestTrustInformation() has changed behavior and now returns the original name instead the lower-cased version. But the behavior might change again in future. So I think it would help to make the code more robust to have a case-insensitive comparison.

bye,
Sumit


Note You need to log in before you can comment on or make changes to this bug.