Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Beste mensen,

Ik heb een webapplicatie op een IIS6 draaien die windows auth heeft aanstaan.
De applicatie kan vervolgens uit de HttpContext.Current de ingelogde user halen.

Die username ziet er dan een beetje zo uit:
domein.local\BasieP

De webapp wil vervolgens weten in welke groepen ik zit, zodat hij kan bepalen welke dingen de app mij laat zien.
Dit deed ik altijd dmv een DirectorySearcher, waarbij ik een query deed op sAmAccountName

Echter nu is er bij ons in het bedrijf wat veranderd. Er is een trust gekomen tussen twee domeinen, namelijk ons hoofddomein (laten we zeggen domein.local) en het gekoppelde domein (kopdom.local)

Als nu een user vanuit kopdom.local naar de webapp gaat ziet IIS hem, en die vind dat hij nu ook in domein.local zit (dmv die trust)
Zodoende wordt de user automatisch doorgestuurd naar de webapplicatie.

De webapplicatie leest de username uit, en gaat met die gegevens in AD zoeken.
Echter is de usename nu niet meer
domein.local\BasieP
maar
kopdom.local\Bas

Nu gaat de applicatie dus kijken in AD, maar aangezien de gebruiker 'Bas' niet in de domein.local AD zit, gaat hij niets vinden.
Sterker nog, als ik dmv ADExplorer (van sysinternals) in de domein.local AD kijk, zie ik een CN=ForeignSecurityPrinciples, waarin (heb ik mij laten vertellen) de trusted domains staan.
Echter hebben alle items in die CN alleen maar rare tekenreeksen als naam, en alle properties van zo'n item ook niet helemaal de waarden die ik verwacht.
De property sAmAccountName bestaat niet eens.

Hoe moet ik nou zorgen dat mijn applicatie ook de AD groepen van de accounts uit kopdom.local gaat uitlezen ZONDER(!) dat de applicatie naar de AD van kopdom.local zelf gaat?
Dus hoe ga ik de groepen uitlezen VIA domein.local?

Kan dat uberhaupt?
Moet ik uberhaupt zelf verbinding maken naar AD?
Kan IIS dat niet voor mij doen?

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Misschien heb ik een te lang verhaal getypt..

De vraag is heel kort en simpel eigenlijk:

Is er een methode dat ik d.m.v. IIS achterhaal in welke groepen mijn (via IIS geauthenticeerde) gebruiker zit?

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
BasieP schreef op dinsdag 29 januari 2013 @ 11:11:
Als nu een user vanuit kopdom.local naar de webapp gaat ziet IIS hem, en die vind dat hij nu ook in domein.local zit (dmv die trust)
Weet je dit wel zeker? Dit klinkt mij heel erg raar in de oren, omdat je een ander domain trust betekent het nog lang niet dat alles maar onderdeel van je basisdomain is...
De webapplicatie leest de username uit, en gaat met die gegevens in AD zoeken.
Echter is de usename nu niet meer
domein.local\BasieP
maar
kopdom.local\Bas

Nu gaat de applicatie dus kijken in AD, maar aangezien de gebruiker 'Bas' niet in de domein.local AD zit, gaat hij niets vinden.
Hoe ben je ineens van kopdom.local\Bas naar Bas gegaan? Ik verwacht dat kopdom.local\Bas namelijk prima resolved mits je het hem maar vraagt.
Enkel maar om Bas vragen dat gaat het hem niet worden (er kan een Bas bestaan in domain.local en in kopdom.local en welke bedoel je dan?)
Hoe moet ik nou zorgen dat mijn applicatie ook de AD groepen van de accounts uit kopdom.local gaat uitlezen ZONDER(!) dat de applicatie naar de AD van kopdom.local zelf gaat?
Dus hoe ga ik de groepen uitlezen VIA domein.local?
Wat is er op tegen om naar de AD van kopdom.local te gaan?
Ik bedoel domain.local kent enkel cached credentials van kopdom.local.

Wat jij probeert te doen is "normaal gesproken" niet mogelijk met een trust, een trust is niets meer / minder dan : Ik vertrouw jouw antwoorden.

En in principe zou ik verwachtten dat IIS dit idd voor je afhandelt, maar dan moet je wel naar kopdom.local\Bas vragen en niet enkel Bas.

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Gomez12 schreef op woensdag 30 januari 2013 @ 21:21:
[...]

Weet je dit wel zeker? Dit klinkt mij heel erg raar in de oren, omdat je een ander domain trust betekent het nog lang niet dat alles maar onderdeel van je basisdomain is...
Laten we het zo zeggen:
Wanneer ik in IIS 'integrated authentication' aanzet wordt de gebruiker geauthoriseerd en kan ik in asp.net het account opvragen middels HttpContext.Current.User
Hier staat dan kopdom.local\Bas in.
Ik ga er vanuit dat IIS niet zomaar in de AD van kopdom.local kan kijken (heb je immers een account voor nodig) en wel in domein.local (want daar is die machine lid van, en de applicatie draait met een user uit dat domein)
Dus ik ging er voor het gemak maar even vanuit dat IIS de gebruiker 'kopdom.local\Bas' authenticeerd via domein.local
[...]
Hoe ben je ineens van kopdom.local\Bas naar Bas gegaan? Ik verwacht dat kopdom.local\Bas namelijk prima resolved mits je het hem maar vraagt.
Enkel maar om Bas vragen dat gaat het hem niet worden (er kan een Bas bestaan in domain.local en in kopdom.local en welke bedoel je dan?)
Maar ik heb geen zin om die vraag te stellen aan alle domeinen. Als ik hem stel aan het hoofdomein (domein.local) moet deze dit toch weer aan zijn trusted domains vragen? of klopt dat niet?

En hoe vraag ik aan AD naar 'domein.local\BasieP' of 'kopdom.local\Bas'?
Ik doe een LDAP bevraging, en ik ken de propertie 'sAmAccountName' maar daar staat niet het domein in. wat voor LDAP query zou ik dan moeten stellen? volgens mij staat namelijk niet in een LDAP welk domein het over gaat.
[...]
Wat is er op tegen om naar de AD van kopdom.local te gaan?
Ik bedoel domain.local kent enkel cached credentials van kopdom.local.
Die credentials vind ik geen punt, dat veranderd toch amper.

Nu is er 1 kopdom.local, maar binnenkort komen er nog 20 bij.
Ik moet om ldap queries te kunnen doen credentials hebben van de ldap server waarop ik ze doe.
Als ik er 22 moet configureren met username en password wordt dat een enorme lap tekst in mijn config file. Daar heb ik weinig zin in.
Wat jij probeert te doen is "normaal gesproken" niet mogelijk met een trust, een trust is niets meer / minder dan : Ik vertrouw jouw antwoorden.
Ik weet daar dus veel te weinig van. Ik had begrepen dat als je het hoofddomein bevraagd deze voor jou doorvraagt naar zijn 'trusted' domains. Zodoende zou je antwoorden kunnen krijgen van verschillende domeinen terwijl je de vraag maar 1x af hoeft te vuren.
En in principe zou ik verwachtten dat IIS dit idd voor je afhandelt, maar dan moet je wel naar kopdom.local\Bas vragen en niet enkel Bas.
IIS handelt het dus al gedeeltelijk af, want hij zegt dat ik met de user 'kopdom.local\Bas' de applicatie in kan.
Dit doet hij op basis van AD, en voordat de trust er lag keurde hij netjes iedereen van kopdom.local af.
Echter kan ik geen groepen vinden in dat wat asp.net mij nu aanbied qua httpContext.
En zelfs als er groepen in zouden zitten zou ik daarmee willen doorvragen (groepen zijn namelijk vaak recursief)


edit:
ik heb nog even zitten googlen, en ik heb nu niet op LDAP gezocht maar op AD, en ik krijg nu wat meer dingen waar ik wat aan heb.

http://stackoverflow.com/...-bind-result-to-list-view

http://stackoverflow.com/...tive-directory-in-asp-net

http://social.technet.mic...ad-4f18-8072-4fd859027ae1


die drie linkjes ga ik morgen even bekijken (ja dit is allemaal niet voor mijn thuissituatie) en nu ga ik slapen ;)

[ Voor 8% gewijzigd door BasieP op 30-01-2013 22:34 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 09-07 20:41
Krijg je toevallig een referral waar je wel moet zijn?
Ik zie dat je dat aan kan zetten in DirectorySearcher (http://msdn.microsoft.com...ralchasing(v=vs.100).aspx)
Nog eentje van SO: http://stackoverflow.com/...rprincipal-findbyidentity

En nog een leuke resource met van alles en nog wat: http://www.codeproject.co...In-Active-Directory-via-C :P

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Momenteel is dit me code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public List<string> GetGroupsByUser(string user)
{
    var result = new List<string>();

    using (var userPrincipal = UserPrincipal.FindByIdentity(pContext, user))
    {
        if (userPrincipal != null)
        {
            foreach (var group in userPrincipal.GetGroups(pContext))
            {
                result.Add(group.SamAccountName);
            }
        }
    }

    return result;
}

(waarbij pContext dus een global is)

Als ik daar nu zoek naar de user domain\BasieP gaat het prima, en krijg ik de groepen terug
Als ik daar zoek naar de user kopdom\Bas dan krijg ik null terug (dus hij kan het userobject niet vinden)

Je zou verwachten dat dit goed gaat toch? Zijn die domeinen dan niet goed gekoppelt? of doe ik nog wat verkeerd?

@jip_86: Ik wilde die links van jou bekijken over die referral, maar die doet het niet (de bovenste iig)

[ Voor 16% gewijzigd door BasieP op 04-02-2013 16:56 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
iemand?

This message was sent on 100% recyclable electrons.

Pagina: 1