Avatar billede orca Nybegynder
16. januar 2008 - 14:02 Der er 1 løsning

Authentication på tværs af WCF services

Halløj

Jeg har en række WCF services der hostes i Windows Services på tværs af flere maskiner under samme AD domæne.

Jeg benytter følgende hjælpemetode til at lave mine channels:

public static T CreateChannel<T>(Binding binding, string endpointAddress)
{
    // Create an endpoint for the specified binding & address
    ServiceEndpoint endpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(T)), binding, new EndpointAddress(endpointAddress));

    // Create a channel factory of type T
    ChannelFactory<T> factory = new ChannelFactory<T>(endpoint);
   
    // Return the created channel
    return factory.CreateChannel();
}

Dette fungerer fint, brugeren bliver ligeledes authenticated og authorized på service enden via:

try
{
    PrincipalPermissionHelper.DemandAnyRole("Role1");
}
catch
{
    throw new SecurityException("ACCESS DENIED for user " + Thread.CurrentPrincipal.Identity.Name + " at ServiceA.");
}

Dette fungerer også fint. BrugerA kalder ServiceA og overfor ServiceA bliver BrugerA tilladt adgang baseret på ovenstående. Selve ServiceA kører under en speciel service konto med mindst mulige privilegier. BrugerA identiteten bruges således udelukkende til at authorize brugen af ServiceA. ServiceA kalder senere hen ServiceB (og ServiceB kalder ServiceC). Både ServiceB og ServiceC kører under deres egne lavt privilegerede konti. Når ServiceA kalder ServiceB bliver ovenstående kodestumper benyttet til at oprette kanalen og godkende brugeren. Problemet er at det er ServiceA's servicekonto der bliver den kaldende identitet overfor ServiceB - her ville jeg gerne have den oprindelige brugers identitet da det er den som skal have godkendelse. BrugerA's identitet skal stadig ikke impersonates eller bruges til andet end at identificere hvert kald i stakken på tværs af services.

Hvordan opnår jeg dette? Jeg har forsøgt diverse forsøg med at impersonate BrugerA under selve kaldet videre til ServiceB osv, men det har jeg ikke fået til at fungere.
Avatar billede orca Nybegynder
31. januar 2008 - 14:59 #1
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester