2012-01-18 2 views
3

У меня есть служба WCF 4, которая находится в подпапке Secure, доступной после аутентификации клиента с использованием проверки подлинности с помощью .NET AuthenticationService.Как вызвать .NET AuthenticationService из json-клиента без ASP.NET

Эта служба WCF предназначена для клиента мобильного приложения, который обменивается данными через json, но не является приложением ASP.NET. Я успешно настроил службу для использования json, а AuthenticationService имеет стандартную конфигурацию, как описано во многих местах, например. http://msdn.microsoft.com/en-us/library/bb398990.aspx

В документации для службы аутентификации говорится: «Приложение должно иметь возможность отправлять и использовать SOAP-сообщение». Однако я хочу, чтобы клиент мог использовать json для аутентификации. Это возможно? Какая конфигурация требуется?

Я нашел эту статью http://weblogs.asp.net/asptest/archive/2008/12/09/working-with-the-asp-net-ajax-authentication-service.aspx, поэтому он выглядит так, как AuthenticationService может обрабатывать json, но использует службы клиентских приложений. Клиент мобильного приложения не является приложением ASP.NET.

ответ

0

Да Услуга аутентификации может обрабатывать JSON. Есть несколько способов сделать это. Вот пример конфигурации, который я использовал в прошлом, используя элемент .

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 

    <services> 
     <service name="System.Web.ApplicationServices.AuthenticationService" behaviorConfiguration="MyServiceBehavior"> 
     <endpoint address="" behaviorConfiguration="ajaxBehavior" 
        contract="System.Web.ApplicationServices.AuthenticationService" 
        binding="webHttpBinding" bindingConfiguration="webHttpBindingSecure" 
        bindingNamespace="http://asp.net/ApplicationServices/v200"/> 
     </service> 
    </services> 

    <behaviors> 
     <endpointBehaviors> 
     <behavior name="ajaxBehavior"> 
      <enableWebScript/> 
     </behavior> 

     </endpointBehaviors> 
     <serviceBehaviors> 

     <behavior name="MyServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    <bindings> 
     <webHttpBinding> 
     <binding name="webHttpBindingSecure"> 
      <security mode="Transport"/> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
</system.serviceModel> 
0

Вопрос старый для долгого времени, но я думаю, что это поможет кому-то, если я отправлю свой ответ.

Наверняка вы можете вернуть json для AuthenticationService. Решение очень просто, как ответ Garret, вам нужно только настроить другую конечную точку, как это, но вам нужно добавить 2 дополнительных атрибута для поведения конечных точек: defaultOutgoingResponseFormat = «Json» и defaultBodyStyle = «Обернуто», чтобы перезаписать ответ по умолчанию для мыла.

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="AuthenticationServiceBehaviors" name="System.Web.ApplicationServices.AuthenticationService"> 
    <endpoint address="" behaviorConfiguration="ajaxBehavior" 
       contract="System.Web.ApplicationServices.AuthenticationService" 
       binding="webHttpBinding" bindingConfiguration="RestBinding" 
       bindingNamespace="http://asp.net/ApplicationServices/v200"/> 
    </service> 
</services> 
<bindings> 
     <webHttpBinding> 
    <binding name="RestBinding" /> 
    </webHttpBinding> 
</bindings> 

<behaviors> 
    <endpointBehaviors> 
    <behavior name="ajaxBehavior"> 
     <webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json" defaultBodyStyle="Wrapped" /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="AuthenticationServiceBehaviors"> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" /> 

Я надеюсь, что эта помощь кому-то, кто хочет выставить членство ASP.net как формат JSON для использования в мобильном приложении.

+0

Это полезно. Вы использовали это с автоматически созданным прокси (например, authsvc.svc/js) или пользовательским кодом JavaScript? Пожалуйста, обратите внимание на отправку своего клиентского кода. – BillVo

+0

Привет @BillVo Я использую это с автоматически созданным прокси: authsvc/login ... Когда вы разоблачили эту enpoint как JSON, вы можете найти ее где угодно в веб-приложении, используя Javascript для мобильного приложения. Пожалуйста, обратитесь к Google, если вам нужен пример кода на стороне клиента, потому что каждый стек клиента имеет другой синтаксис. С уважением. – tungnt185