Доступ к WCF с информацией о претензиях от Silverlight - PullRequest
2 голосов
/ 19 мая 2011

Я работаю над приложением Silverlight 4, которое подключается к службе заявок WCF. Я использую следующий код для получения токена заявки в моем WCF для выполнения авторизации.

IClaimsPrincipal principal = ( IClaimsPrincipal )Thread.CurrentPrincipal;   
IClaimsIdentity identity = ( IClaimsIdentity )principal.Identity;
return string.Format( "You entered: {0} and you are {1}", value, identity.Name );

Когда я использую wsHttpBinding в WCF и пробую его с консольным приложением, он работает нормально. Но поскольку Silverlight поддерживает только basicHttp и customeBinding, я не могу использовать wsHttp, ws2007Http или любую другую привязку. Из-за чего я не получаю токен IClaimIdentity в моем WCF от Silverlight.

Можно ли каким-либо образом использовать любое из поддерживаемых привязок Silverlight и по-прежнему получать ClaimIdentity в моем WCF. Есть ли какой-нибудь учебник / справочный текст, где я могу прочитать об этом подробнее.

Мои настройки WCF:

<system.serviceModel>
    <services>
      <service name="ClainAwareWCF.Service" behaviorConfiguration="ClainAwareWCF.ServiceBehavior">
        <endpoint address="" binding="basicHttpBinding" contract="ClainAwareWCF.IService" bindingConfiguration="basicbind">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="basicbind">
          <security mode="TransportCredentialOnly"></security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ClainAwareWCF.ServiceBehavior" > 
          <federatedServiceHostConfiguration/>
          <serviceMetadata  httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <extensions>      
      <behaviorExtensions>
        <add name="federatedServiceHostConfiguration" type="Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </behaviorExtensions>
    </extensions>
  </system.serviceModel>

Ответы [ 2 ]

1 голос
/ 22 июня 2012

Silverlight не поддерживает встроенную авторизацию на основе утверждений и WS-Trust.Microsoft собиралась добавить это в Silverlight 5, но, к сожалению, забыла это сделать.

Однако в Identity Training Kit есть очень элегантная и полезная версия WIF IdentityModel "Silverlight".

Решение состоит из базового AuthenticationService, который транслирует маркеры аутентификации WIF на стороне сервера заявок, и клиентской библиотеки Silverlight "SL.IdentityModel", содержащей строительные блоки, такие как версия ClaimsPrincipal Silverlight.

Получите учебный комплект для идентификации здесь .Ищите пример реализации Silverlight.

1 голос
/ 19 мая 2011

Попытка вызвать это напрямую от клиента никогда не произойдет из-за проблем с привязкой, а также из-за безопасности осведомленности клиента об SL (Windows / Forms / WIF / и т. Д.), Но один из подходов заключается в использовании аутентификации домена RIA Services Службы для проверки подлинности и вызова служб со стороны сервера через конечную точку Invoke RIA WCF. Пользовательский контекст безопасности передается клиенту, и вы можете напрямую передавать данные по проводам.

Это может привести вас в правильном направлении:

http://archive.msdn.microsoft.com/RiaServices/Release/ProjectReleases.aspx?ReleaseId=5617

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...