No mueva el suyo y añada parámetros explícitos, ¡de hecho, es demasiado trabajo!
Eche un vistazo a las características de seguridad de WCF, ¡hay muchas disponibles! Puede, por ejemplo, asegure el mensaje e incluya las credenciales dentro del mensaje; ¡todo listo, no se requiere codificación adicional de su lado!
Control hacia fuera este excelente artículo sobre la seguridad de WCF por Michele Leroux Bustamante: http://www.devx.com/codemag/Article/33342
En su caso, sugeriría seguridad de los mensajes con las credenciales Nombre de usuario - es necesario configurar esto en ambos extremos:
del lado del servidor:
<bindings>
<basicHttpBinding>
<binding name="SecuredBasicHttp" >
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="YourService">
<endpoint address="http://localhost:8000/MyService"
binding="basicHttpBinding"
bindingConfiguration="SecuredBasicHttp"
contract="IYourService" />
</service>
</services>
Y tiene que aplicar la misma configuración en el lado del cliente:
<bindings>
<basicHttpBinding>
<binding name="SecuredBasicHttp" >
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8000/MyService"
binding="basicHttpBinding"
bindingConfiguration="SecuredBasicHttp"
contract="IYourService" />
</client>
Ahora su servidor y el cliente están de acuerdo en la seguridad - en el cliente, que le especifique el nombre de usuario y contraseña para usar como esto:
YourServiceClient client = new YourServiceClient();
client.ClientCredentials.UserName.UserName = "your user name";
client.ClientCredentials.UserName.Password = "top$secret";
En el lado del servidor, necesitará para configurar cómo se validan estas credenciales de usuario, generalmente contra un dominio de Windows (Active Directory) o contra el modelo de proveedor de membresía de ASP.NET. En cualquier caso, si las credenciales del usuario no se pueden verificar contra esa tienda que usted defina, la llamada será rechazada.
Espero que esto ayude un poco - la seguridad es un gran tema en WCF y tiene muchas opciones - puede ser un poco desalentador, pero al final, ¡generalmente tiene sentido! :-)
Marc
Se ve bien; ¿Sabes por casualidad si esto (o algo similar) se puede utilizar si se utiliza httpwebrequest sin formato? Tengo una pila de RPC personalizada que me gustaría asegurar de la misma manera (por supuesto, puedo preguntar como un nuevo queston si es una respuesta no trivial) –
Debería hacer sí; ver http://www.silverlightshow.net/items/Cookies-in-Silverlight-Web-Requests.aspx – blowdart
Ta; Voy a ver eso ;-p –