Не сворачивайте свои собственные и не добавляйте явные параметры - это действительно слишком много работы!
Ознакомьтесь с функциями безопасности WCF - многие из них доступны! Вы можете, например, защитите сообщение и включите учетные данные внутри сообщения - все из коробки, не требуется дополнительное кодирование на вашей стороне!
проверить эту прекрасную статью по безопасности WCF Мишель Леру Бустаманте: http://www.devx.com/codemag/Article/33342
В вашем случае, я хотел бы предложить безопасность сообщений с учетными данными Имя пользователя - вам нужно настроить это на обоих концах:
стороне сервера:
<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>
И вам необходимо применить те же настройки на стороне клиента:
<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>
Теперь сервер и клиент договариваются о безопасности - на клиенте, вы бы указать имя пользователя и пароль для использования, как это:
YourServiceClient client = new YourServiceClient();
client.ClientCredentials.UserName.UserName = "your user name";
client.ClientCredentials.UserName.Password = "top$secret";
На стороне сервера, вам необходимо для настройки того, как эти учетные данные пользователя проверяются - как правило, либо в домене Windows (Active Directory), либо в отношении модели поставщика членства ASP.NET. В любом случае, если учетные данные пользователя не могут быть проверены в отношении указанного вами магазина, вызов будет отклонен.
Надеюсь, это немного поможет - безопасность - это большая тема в WCF и имеет множество вариантов - это может быть немного сложной задачей, но, в конце концов, обычно это имеет смысл! :-)
Марк
Выглядит хорошо; вам известно, можно ли использовать это (или что-то подобное) при использовании raw httpwebrequest? У меня есть собственный стек RPC, который я бы хотел защитить таким же образом (я могу, конечно, спросить, как новый квест, если это нетривиальный ответ) –
Он должен делать «да»; см. http://www.silverlightshow.net/items/Cookies-in-Silverlight-Web-Requests.aspx – blowdart
Ta; Я посмотрю на это; -p –