WSE Security - usernameToken
Bonjour, j'utilise un web service afin d'envoyer un fichier, juste avant, je dois m'identifier à l'aide du WSE Security usernameToken, le problème que j'ai, c'est que " l'entête de sécurité est incorrecte", d'après ce que j'ai compris, mon soucis vient du fait que mon fichier app.config n'est pas formaté comme il le devrait, le mien se présente ainsi:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<system.diagnostics>
<sources>
<!-- Cette section définit la configuration de l'enregistrement dans le fichier journal de My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Supprimez les marques de commentaire dans la section suivante pour écrire dans le journal des événements de l'application -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information"/>
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
<!-- Supprimez les marques de commentaire dans la section suivante et remplacez APPLICATION_NAME par le nom de votre application à écrire dans le journal des événements de l'application -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BillServicePortBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://www.sunat.gob.pe:443/ol-ti-itcpgem/billService"
binding="basicHttpBinding" bindingConfiguration="BillServicePortBinding"
contract="Production.billService" name="BillServicePort" />
</client>
</system.serviceModel>
</configuration> |
2 services sont mis en place, je me sers du 1er uniquement, voici les liens ainsi que les descriptions:
Pour l'envoi en production : https://www.sunat.gob.pe/ol-ti-itcpgem/billService?wsdl
Pour l'envoi par homologation : https://www.sunat.gob.pe/ol-ti-itcpg...llService?wsdl
Et voici mon code VB:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
Dim file As String = "MonFichierAEnvoyer.zip"
Dim userName As String = "IdIdentification"
Dim pwd As String = "PWDIdentification"
Dim local_filereceived As String = "R-" & file
Dim zip As New ICSharpCode.SharpZipLib.Zip.FastZip
System.Net.ServicePointManager.UseNagleAlgorithm = True
System.Net.ServicePointManager.Expect100Continue = False
System.Net.ServicePointManager.CheckCertificateRevocationList = True
Try
Dim data As Byte() = System.IO.File.ReadAllBytes(file)
Dim ws As New Production.billServiceClient
Dim Retour As Byte()
ws.ClientCredentials.CreateSecurityTokenManager()
ws.ClientCredentials.UserName.UserName = userName
ws.ClientCredentials.UserName.Password = pwd
ws.Open()
'envoi du fichier ZIP à la SUNAT
Retour = ws.sendBill(local_filereceived, data)
'la réponse
System.IO.File.WriteAllBytes(local_filereceived, Retour)
'décompresser
zip.ExtractZip(local_filereceived, ".", "")
'supprimer les fichiers ZIP ainsi eus
System.IO.File.Delete(local_filereceived)
System.IO.File.Delete(local_filereceived)
Catch ex As Exception
MsgBox(ex.Message)
End Try |
Merci