Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Hoel Chatellier
C# : erreur HTTP sur le schéma d'authentification [Résolu]
July 16, 2012 6:42 AM
Answer

Hoel Chatellier

Rank: New Member

Posts: 20

Join Date: July 11, 2012

Recent Posts

Bonjour,

Je fais quelques tests pour pouvoir piloter Liferay à partir d'un programme en C#,
mais je butte dès la connection au portail, sur le shéma d'itentification, il trouve un
shéma de type Basic, et il demande... un shéma de type Basic. Je ne parviens pas
à comprendre ce qui le fait planter.

Le programme utilisé :

 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Text;
 5using LifeRayWebServicesExample.LiferayUserService;
 6
 7namespace LifeRayWebServicesExample
 8{
 9    class Program
10    {
11        static void Main(string[] args)
12        {
13            var client = new UserServiceSoapClient();
14            client.ClientCredentials.UserName.UserName = "2";
15            client.ClientCredentials.UserName.Password = "***";
16            var user = client.getUserByScreenName(1, "Test");                                     // Ligne où l'exception se lance
17            Console.WriteLine(user.greeting);
18            Console.ReadLine();
19        }
20    }
21}


app.config :

 1<?xml version="1.0" encoding="utf-8" ?>
 2<configuration>
 3  <system.serviceModel>
 4    <bindings>
 5      <basicHttpBinding>
 6        <binding name="Portal_UserServiceSoapBinding" closeTimeout="00:01:00"
 7          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
 8          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
 9          maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
10          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
11          useDefaultWebProxy="true">
12          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
13            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
14          <security mode="TransportCredentialOnly">
15            <transport clientCredentialType="Basic" realm="PortalRealm" />
16          </security>
17        </binding>
18      </basicHttpBinding>
19    </bindings>
20    <client>
21      <endpoint address="http://localhost:8080/tunnel-web/secure/axis/Portal_UserService"
22        binding="basicHttpBinding" bindingConfiguration="Portal_UserServiceSoapBinding"
23        contract="LiferayUserService.UserServiceSoap" name="Portal_UserService" />
24    </client>
25  </system.serviceModel>
26</configuration>


L'erreur :

L'exception System.ServiceModel.Security.MessageSecurityException n'a pas été gérée
Message=La demande HTTP n'est pas autorisée avec un schéma d'authentification client 'Basic'. L'en-tête d'authentification reçu du serveur était 'Basic realm="PortalRealm"'.
Source=mscorlib
StackTrace:
Server stack trace:
à System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication(HttpWebRequest request, HttpWebResponse response, WebException responseException, HttpChannelFactory factory)
à System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding)
à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
à System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
à System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
à System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
à System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
à LifeRayWebServicesExample.LiferayUserService.UserServiceSoap.getUserByScreenName(Int64 companyId, String screenName)
à LifeRayWebServicesExample.LiferayUserService.UserServiceSoapClient.getUserByScreenName(Int64 companyId, String screenName) dans C:\Users\chatelier-h\Documents\Visual Studio 2010\Projects\LifeRayWebServicesExample\LifeRayWebServicesExample\Service References\LiferayUserService\Reference.cs:ligne 3896
à LifeRayWebServicesExample.Program.Main(String[] args) dans C:\Users\chatelier-h\Documents\Visual Studio 2010\Projects\LifeRayWebServicesExample\LifeRayWebServicesExample\Program.cs:ligne 16
à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
à System.Threading.ThreadHelper.ThreadStart()
InnerException: System.Net.WebException
Message=Le serveur distant a retourné une erreur : (401) Non autorisé.
Source=System
StackTrace:
à System.Net.HttpWebRequest.GetResponse()
à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
InnerException:



Merci pour vos réponses.


Note :
Je développe avec tomcat-6 et VisualStudio sur C#
Pascal SIMON
RE: C# : erreur HTTP sur le schéma d'authentification
July 11, 2012 7:20 AM
Answer

Pascal SIMON

Rank: Junior Member

Posts: 80

Join Date: February 18, 2009

Recent Posts

Hello,

Est-ce que si tu entres cette url :

http://localhost:<port>/tunnel-web/axis

tu as la liste des wsdl qui apparait ?

Et, est-ce que tu as modifié les valeurs suivantes dans le fichier portal-ext.properties :

axis.servlet.hosts.allowed=
axis.servlet.https.required=


Pascal
Hoel Chatellier
RE: C# : erreur HTTP sur le schéma d'authentification
July 11, 2012 7:56 AM
Answer

Hoel Chatellier

Rank: New Member

Posts: 20

Join Date: July 11, 2012

Recent Posts

Pascal SIMON:
Hello,

Est-ce que si tu entres cette url :

http://localhost:<port>/tunnel-web/axis

tu as la liste des wsdl qui apparait ?

Et, est-ce que tu as modifié les valeurs suivantes dans le fichier portal-ext.properties :

axis.servlet.hosts.allowed=
axis.servlet.https.required=


Pour ce qui est de l'url, j'ai bien les wsdl qui apparaissent,
en revanche, portal-ext.properties est absent là où il devrait
être, je vais me pencher dessus.

Saurais-tu quels types de paramètres il faut mettre ? Je teste
pour l'instant en local.

Merci pour ta réponse.
Pascal SIMON
RE: C# : erreur HTTP sur le schéma d'authentification
July 12, 2012 7:25 AM
Answer

Pascal SIMON

Rank: Junior Member

Posts: 80

Join Date: February 18, 2009

Recent Posts

Hello,

Pour les host autorisés tu peux d'abord mettre 127.0.0.1 et https required à false pour tes premiers tests.

Pascal
Hoel Chatellier
RE: C# : erreur HTTP sur le schéma d'authentification
July 16, 2012 6:40 AM
Answer

Hoel Chatellier

Rank: New Member

Posts: 20

Join Date: July 11, 2012

Recent Posts

J'ai réinstallé une autre version du serveur et ça a fonctionné,
je n'ai pas pu trouver d'où venait le problème, merci tout de même
pour ta réponse.