WCF Authorization sample

martedì 28 aprile 2009 - 12.57

foo Profilo | Newbie

Ciao, ho appena creato un semplice applicazione WCF con un client e un service come console application.
Nel codice del servizio ho scritto:

principal = Thread.CurrentPrincipal;

sperando che, come scritto nella documentazione, mi venisse restituito il principal del client che ha effettuato la chiamata ma cosi non e'...

sul client ho :
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
IPrincipal principal = Thread.CurrentPrincipal;

e in quel caso il principal restituito e' corretto...

credo che sia un probelma di configurazione del APP.conf del server...
ho provato a modificare l'item

<bindings>
<basicHttpBinding>
<binding name="Binding1">
<security mode="Message" />
</binding>
</basicHttpBinding >
</bindings>

ma sembra che questo tipo di binding non supporti in mode Messagge...

Vorrei semplicamente capire come si fa a fare in modo che il principal del client sia conosciuto anche al service in modo tale che possa poi farci dei controlli d'accesso..

saluti

foo

tonyexpo Profilo | Senior Member



Ciao

per avere i dati dell'autenticazione del client è necessario abilitare l'impersonificazione del chiamante:
per farlo puoi usare il file di configurazione del client come segue:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint name="ClientEndpoint" behaviorConfiguration="ClientBehavior"
address="http://localhost/Service"
binding="wsHttpBinding" bindingConfiguration="ClientHTTP"
contract="TuaDll.IService" />
</client>
<bindings>
<wsHttpBinding>
<binding name="ClientHTTP">
<security mode="Message">
<message clientCredentialType="Windows"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="ClientBehavior">
<clientCredentials>
<windows allowedImpersonationLevel="Identification"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

ricorda ke le impostazioni del binding devono combaciare con quelle del file di configurazione del server

e poi abilitare l'impersonificazione a livello di behavior della classe istanza come in questo esempio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra



Antonio Esposito
MCTS .NET 3.5 WCF, .NET 2.0 Distributed applications
MCP .NET 3.5/2.0

foo Profilo | Newbie

grazie.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5