Мой код C # не может импортировать сертификат P12 и аутентификации и показывает ошибочные учетные данные - PullRequest
1 голос
/ 28 мая 2019

У меня есть сервер 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: неверные учетные данные

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