У меня есть сервер wsdl, работающий с моим клиентом. У нас есть 2 сервиса, первый сервис - получение токена пользователя путем проверки с использованием предоставленных нам имени пользователя и пароля. мы можем получить токен. теперь, когда мы приходим ко второму сервису, мы должны передать Outlet Id, ID пользователя, ID провайдера, мы передаем это, и мы должны использовать сертификаты p12 или pfx (сертификаты доступны с нами в папке) и в во втором сервисном случае идентификатором пользователя и паролем для аутентификации являются токен и другой пароль соответственно. Но мы не можем вызвать сертификат и передать его на сервер вместе с идентификатором пользователя, паролем и 3 данными провайдера, упомянутыми ранее (идентификатор розетки, идентификатор провайдера и идентификатор пользователя). Пожалуйста, помогите нам в передаче сертификатов на сервер WSDL. Когда мы используем SoapUi, мы должны вручную добавить конфигурацию безопасности WS и хранилище ключей (сертификат jks), и это работает там, но как нам это сделать в c #?
Я попытался запустить его на SoapUi, он отлично работает с сертификатом, но без него код покажет ту же ошибку неверных учетных данных
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Security;
using System.ServiceModel.Security.Tokens;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
try
{
System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
ServiceReference1.AuthenticateAndGetUserDetailsResponse responseObject;
using (ServiceReference1.SecurityPortTypeClient client = new ServiceReference1.SecurityPortTypeClient())
{
ServiceReference1.ItemsChoiceType[] objArray = new ServiceReference1.ItemsChoiceType[2];
objArray[0] = ServiceReference1.ItemsChoiceType.UserId;
objArray[1] = ServiceReference1.ItemsChoiceType.Password;
string[] itemArray = new string[2];
itemArray[0] = "AZAE022";
itemArray[1] = "LZDE238a";
ServiceReference1.AuthenticateAndGetUserDetailsRequest request = new ServiceReference1.AuthenticateAndGetUserDetailsRequest();
request.UserLoginDetails = new ServiceReference1.UserLoginDetailsType()
{
ChannelType = ServiceReference1.ChannelType.PORTAL,
ChannelTypeSpecified = true,
IPAddress = "192.168.100.26",
ItemsElementName = objArray,
Items = itemArray
};
responseObject = client.AuthenticateAndGetUserDetails(request);
}
using (HotelService.HotelEventManagementServicePortTypeClient client = new HotelService.HotelEventManagementServicePortTypeClient())
{
HotelService.SubmitHotelEventRequest request = new HotelService.SubmitHotelEventRequest();
HotelService.HotelBookingType hotelBookingType = new HotelService.HotelBookingType();
hotelBookingType.ProviderData = new HotelService.ProviderDataType() { OutletId = "12355790", ProviderId = "AZAE", UserId = "AZAE022" };
hotelBookingType.PersonData = new HotelService.BookingPersonDataType()
{
Birth = new HotelService.BirthType()
{
Place = "India",
Date = new DateTime(1983, 12, 2)
},
CountryofResidence = "India",
FamilyName = "Family",
Gender = HotelService.GenderType.Male,
GenderSpecified = true,
GivenName = "Name",
IdDocumentData = new HotelService.BookingIdDocumentDataType()
{
DocumentExpiryDate = new DateTime(2022, 12, 31),
DocumentExpiryDateSpecified = true,
DocumentIssueAuthority = "Government of India",
DocumentIssueCountry = "India",
DocumentIssueDate = new DateTime(2012, 12, 31),
DocumentIssueDateSpecified = true,
DocumentIssuePlace = "Mumbai",
DocumentNumber = "P483828",
DocumentType = HotelService.TraveldocType.P,
DocumentTypeSpecified = true,
IsEndorsee = false,
IsEndorseeSpecified = true
},
Nationality = "Indian"
};
hotelBookingType.EventData = new HotelService.BookingEventDataType()
{
//BookingReference = "12345",
//CardType = "VISA",
ContactNumber1 = "12345678",
ContactNumber2 = "98761532",
Email = "abcd@yahoo.com",
JobTitle = "Senior Software Consultant",
NumberofOccupants = "3",
NumberofRooms = "1",
OrganisationName = "asdf",
OrganisationNumber = "23232323",
PaymentDetail = new HotelService.PaymentDetailType[] { new HotelService.PaymentDetailType() { PaymentMethod = HotelService.PaymentMethodType.Cash } },
ScheduledArrivalDate = new DateTime(2019, 5, 19),
ScheduledDepartureDate = new DateTime(2019, 5, 31)
};
request.Item = hotelBookingType;
string userToken = responseObject.IdentificationToken;
client.ClientCredentials.UserName.UserName = userToken;
client.ClientCredentials.UserName.Password = "Test@123";
HotelService.SubmitHotelEventResponse response = client.SubmitHotelEvent(request);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
}
}
}
}
Сообщение об ошибке SYS9003: неверные учетные данные