Локализация ошибки. Компоненты
АРМ (распределенный вариант установки) и сервер RusGuard. Все версии ПО.
Описание причин и устранение ошибки
Если время и дата настроены некорректно, возможно возникновение ошибки при запуске ПО (см. рис. 7). Для исправления ошибки необходимо привести локальные настройки времени и даты в соответствие с сервером. Допустимое расхождение: +/- 5 минут.
Рисунок 7 — Ошибка при запуске ПО. Некорректно выставлено время и дата на локальном ПК
Пример
Корректная настройка
В таблице ниже приведены примеры корректной настройки времени/даты (см. табл. 1).
Таблица 1 — Пример правильной настройки времени/даты |
|
---|---|
Сервер |
АРМ |
Время 16.50 (часовой пояс +4) |
Время 16.50 (часовой пояс +4) |
Время 16.50 (часовой пояс +4) |
Время 15.50 (часовой пояс +3) |
Время 16.50 (часовой пояс +4) |
Время 17.50 (часовой пояс +5) |
Некорректная настройка
В таблице ниже (см. табл. 2) приведены примеры некорректной настройки времени/даты:
•одинаковое время при разных часовых поясах;
•разное время в одном часовом поясе.
Таблица 2 — Пример неправильной настройки времени/даты |
|
---|---|
Сервер |
АРМ |
Время 16.50 (часовой пояс +4) |
Время 16.40 (часовой пояс +4) |
Время 16.50 (часовой пояс +4) |
Время 16.50 (часовой пояс +3) |
Время 16.50 (часовой пояс +4) |
Время 16.50 (часовой пояс +5) |
Произошла ошибка при проверке безопасности сообщения
когда я пытаюсь вызвать службу WCF я получаю следующее сообщение «произошла ошибка при проверке безопасности сообщения.»
когда я удаляю пользовательскую аутентификацию, служба работает без проблем. Я не могу понять, что я неправильно сконфигурировал в своей сети.конфиг. Любое понимание будет оценено.
<system.serviceModel>
<services>
<service behaviorConfiguration="NAThriveExtensions.nableAPIBehavior"
name="NAThriveExtensions.nableAPI">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="basicHttpBinding_Secure"
contract="NAThriveExtensions.InableAPI">
</endpoint>
<endpoint
address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="NAThriveExtensions.nableAPIBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType= "NAThriveExtensions.Authentication, NAThriveExtensions" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding_Secure">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
7 ответов
Я получал это же сообщение об ошибке, и оказалось, что это связано с разницей во времени между моей рабочей станцией и сервером, на котором размещена служба WCF. Сервер был около 10 минут позади моей машины, и WCF security, похоже, не очень нравится.
чтобы найти корневую проблему, я включил serviceSecurityAuditing в конфигурационном файле сервера. Добавьте в конфигурацию/систему следующее.serviceModel / поведение / serviceBehaviors / раздел поведение для вашего обслуживания:
<serviceSecurityAudit
auditLogLocation="Application"
serviceAuthorizationAuditLevel="Failure"
messageAuthenticationAuditLevel="Failure"
suppressAuditFailure="true"/>
следующий сайт был полезен в выяснении этого:
http://blogs.microsoft.co.il/blogs/urig/archive/2011/01/23/wcf-quot-an-error-occurred-when-verifying-security-for-the-message-quot-and-service-security-audit.aspx
другая причина это сообщение, когда некоторые из ваших машин не синхронизированы во времени. WCF по умолчанию допускает пятиминутный разрыв; кроме того, он выдает ошибку, если что-то не синхронизировано.
раствор для синхронизации всех ваших машин. time.windows.com
славится тем, что не работает, поэтому я предлагаю использовать что-то другое. (Если вы находитесь в корпоративной среде, локальный контроллер домена может быть правильный выбор.)
Это оказалось проблемой на стороне потребления, а не с самой службой. Webmethods 8 программного обеспечения AG потреблял этот сервер, но не было никакого обработчика безопасности, добавленного к службе, поэтому учетные данные не были добавлены в заголовок, что привело к вышеупомянутой ошибке.
Я получаю ту же ошибку на моем сервере IIS 7.5. Я забыл добавить разрешение на чтение на закрытый ключ сертификата в виртуальный аккаунт пула приложений (например, IIS AppPoolASP.NET v4.0).
для информации, тестируя различные комбинации учетных записей и разрешений, я заметил, что пул приложений необходимо переработать, чтобы потерять доступ к ключу, как только он был извлечен один раз.
(0x80131501-произошла ошибка при проверке безопасности сообщение.)
Я получал ту же ошибку, и ни одна из вышеперечисленных помощь для меня.
Я, наконец, отследил его до connectionStrings в родительской сети.config (моя служба была развернута в дочернем приложении на сайте администратора).
Да, звучит смешно, но как только я завернул строки подключения в родительской сети.config с элементом location все начали работать.
для ясности, в родительской сети.config я изменил это
<connectionStrings>
<add name="..." />
</connectionStrings>
в это
<location path="." inheritInChildApplications="false">
<connectionStrings>
<add name="..." />
</connectionStrings>
</location>
обратите внимание, что эта ошибка также привела к этому очень бесполезному serviceSecurityAudit сообщение:
ошибка проверки подлинности сообщения.
Услуга. :..
Действие:http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
ClientIdentity:
Значение activityid:
ArgumentNullException: значение не может быть null.
Имя параметра: менеджер
Я получал ту же ошибку. Я забыл добавить разрешение на чтение в базу данных членства aspnetdb в (IIS APPPOOLDefaultAppPool).
ошибка проверки подлинности сообщения. Услуга.:…
действие:http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
ClientIdentity:
значение activityid:
SqlException: не удается открыть базу данных «aspnetdb», запрошенную логином. Ошибка входа в систему.
ошибка входа в систему для IIS пользователя
Пула средством’.
имя пользователя и пароль сервер подключения,а не ваши
имя пользователя и пароль для входа в систему.
pavel.kozak |
|
Статус: Участник Группы: Участники Зарегистрирован: 13.12.2019(UTC) |
Добрый день. Пока вопрос туманный, т.к. нет полного понимания происходящего. Есть устоявшийся проект с использованием КриптоПро 4.0 + КриптоПро .NET (6893 работает стабильно), используется для подключения к Web сервису по WCF (Гост 2012). Начали миграцию проекта на NET Core 3.x + .NET Framework 4.7.2, до этого была смесь Core 2.x + .NET Framework 4.6.1. Предположительно(т.к. ставим средствами VS 2019, что он там ещё тянет под сомнением) после установки на машину SDK Core 3.x + SDK .NET Framework 4.8 + соответственно сам коре и фреймфорк получаем проблемы с WCF в существующем проекте, т.е. изменений в сам проект ещё не внесли, только установили Core + FrameWork посвежее. При попытке подключения к сервису с авторизацией по ГОСТ ключу 2012, получаем ошибку: Коллекция шифрования маркера не поддерживает алгоритм «urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-256». Т.е. поведение, как будто не установлен КриптоПро .NET. Переустанавливаем весь комплект КриптоПро + КриптоПро .NET. Результата нет. Проверено на двух машинах Windows 10 И Windows Server 2012 R2. Интересный момент, попробовали поднять версию Крипто Про .NET (SDK Крипто Про .NET поднимали соответственно) до 7132 Выше указанная ошибка на этапе подключения пропала, но при вызове получили другую ошибку: Попробую узнать какую версию SDK Крипто Про использует поставщик Web Сервиса. Отредактировано пользователем 10 января 2020 г. 10:25:30(UTC) |
|
|
Максим Коллегин |
|
Статус: Сотрудник Группы: Администраторы Зарегистрирован: 12.12.2007(UTC) Сказал «Спасибо»: 21 раз |
Обновлять КриптоПро .Net при обновлении .Net нужно с вероятностью 90% |
Знания в базе знаний, поддержка в техподдержке |
|
|
WWW |
pavel.kozak |
|
Статус: Участник Группы: Участники Зарегистрирован: 13.12.2019(UTC) |
Спасибо. Да, форк видели но не решились, поэтому и смесь Core 98% + Framework 2%. Сосредоточимся тогда на вопросе почему не работает с .NET КриптоПро 7132. Попробуем ещё раз пересобрать с новым SDK 7132, может что-то упустил. Насколько важно, что бы .NET КриптоПро был одинаковый на клиенте и на сервере? |
|
|
Максим Коллегин |
|
Статус: Сотрудник Группы: Администраторы Зарегистрирован: 12.12.2007(UTC) Сказал «Спасибо»: 21 раз |
Автор: pavel.kozak Насколько важно, что бы .NET КриптоПро был одинаковый на клиенте и на сервере? Не должны быть одинаковыми. Постарайтесь собрать трассировку WCF — посмотрим. |
Знания в базе знаний, поддержка в техподдержке |
|
|
WWW |
pavel.kozak |
|
Статус: Участник Группы: Участники Зарегистрирован: 13.12.2019(UTC) |
Пересобрал с последним SDK. Если по трейсу, то получается следующий порядок: Пытаемся вызвать удаленную функцию TestAuthentication Поставщик токена безопасности открыт. Генерирование исключения Протоколу безопасности не может проверить входящее сообщение. Конец. Тот же код с предыдущей версией работает корректно. Пока не возможности проверить на чистой машине свежий SDK КриптоПро на старом фреймвекке. |
|
|
pavel.kozak |
|
Статус: Участник Группы: Участники Зарегистрирован: 13.12.2019(UTC) |
Автор: Максим Коллегин Не должны быть одинаковыми. Оказывается, все таки есть зависимости. https://br.so-ups.ru/Pub…ws=%5Bobject%20Object%5D Как-то упустил эту новость. Теперь тупичок, придется ещё одну кашу делать и запускать прослойку на машине со старым фремвёрком и старым .NET КриптоПро :(. |
|
|
Максим Коллегин |
|
Статус: Сотрудник Группы: Администраторы Зарегистрирован: 12.12.2007(UTC) Сказал «Спасибо»: 21 раз |
Странно, ничего не слышал про это. Изучим вопрос. |
Знания в базе знаний, поддержка в техподдержке |
|
|
WWW |
Артём Макаров |
|
Статус: Сотрудник Группы: Участники Зарегистрирован: 20.02.2017(UTC) Сказал(а) «Спасибо»: 4 раз |
Добрый день. Подскажите, какой сейчас target framework задан в проекте? Какая привязка используется? Если возможно приложите файл конфигурации клиента (app.config). Можете приложить wcf trace и messssage log с ошибкой? Как собирать можно посмотреть тут — https://docs.microsoft.c…figuring-message-logging Код:
|
Техническую поддержку оказываем тут |
|
|
|
pavel.kozak |
|
Статус: Участник Группы: Участники Зарегистрирован: 13.12.2019(UTC) |
Автор: Максим Коллегин Странно, ничего не слышал про это. Изучим вопрос. Насколько успел узнать, тикет поставщиком сервиса создавался, примерно в то время когда они писали эту новость. |
|
|
pavel.kozak |
|
Статус: Участник Группы: Участники Зарегистрирован: 13.12.2019(UTC) |
Автор: Артём Макаров Подскажите, какой сейчас target framework задан в проекте? Проверяли несколько, поведение и ошибка одинаковые и на 4.6.2, 4.7.1, 4.8. Автор: Артём Макаров Какая привязка используется? WSHttpBinding Это пример со стенда, в основном проекте вместо конфига настройка из кода идет. Но значения те же. <wsHttpBinding> <endpoint address=»http://br.so-ups.ru:8091/PersonalApi/PersonalApiService.svc/ByCertificate» Автор: Артём Макаров Можете приложить wcf trace и messssage log с ошибкой? Я отправлю в личку, то что собрали в пятницу с нашими настройками, если не подойдет, то позже сниму с вашими рекомендациями. |
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
When I try to call a WCF service I am getting the following message «An error occurred when verifying security for the message.»
When I remove the custom authenication the service works no problem. I can’t figure out though what I have misconfigured in my web.config. Any insight would be appreciated.
<system.serviceModel>
<services>
<service behaviorConfiguration="NAThriveExtensions.nableAPIBehavior"
name="NAThriveExtensions.nableAPI">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="basicHttpBinding_Secure"
contract="NAThriveExtensions.InableAPI">
</endpoint>
<endpoint
address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="NAThriveExtensions.nableAPIBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType= "NAThriveExtensions.Authentication, NAThriveExtensions" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding_Secure">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
asked Sep 21, 2010 at 23:26
Matt KlepeisMatt Klepeis
1,7241 gold badge14 silver badges25 bronze badges
I was getting this same error message and it turned out to be due to a time difference between my workstation machine and the server hosting the WCF service. The server was about 10 minutes behind my machine and WCF security doesn’t seem to like that very much.
To find the root problem I turned on serviceSecurityAuditing in the server’s config file. Add the following to the configuration/system.serviceModel/behaviors/serviceBehaviors/behavior section for your service:
<serviceSecurityAudit
auditLogLocation="Application"
serviceAuthorizationAuditLevel="Failure"
messageAuthenticationAuditLevel="Failure"
suppressAuditFailure="true"/>
The following site was helpful in figuring this out:
http://blogs.microsoft.co.il/blogs/urig/archive/2011/01/23/wcf-quot-an-error-occurred-when-verifying-security-for-the-message-quot-and-service-security-audit.aspx
answered Mar 7, 2013 at 23:10
3
Another cause of this message is when some of your machines are not synchronized in time. WCF, by default, allows a five-minute gap; beyond this, it throws an error if things are out of synch.
The solution is to synch all your machines. time.windows.com
is notorious for not working, so I suggest using something else. (If you’re in a corporate environment, a local domain controller may be the correct choice here.)
answered Jan 31, 2014 at 16:30
ashes999ashes999
9,84715 gold badges72 silver badges120 bronze badges
3
This ended up being an problem on the consuming side, not with the service itself. Software AG’s webMethods 8 was consuming this server but there was no Security Handler added to the service so the credentials were not being added to the header thus resulting the in the aforementioned error.
answered Oct 8, 2010 at 16:24
Matt KlepeisMatt Klepeis
1,7241 gold badge14 silver badges25 bronze badges
2
I had a similar issue.
I was building my datetime formatted strings using my local time, but my service/server was expecting GMT.
I needed to get the GMT time (JAVA):
final Date currentTime = new Date();
final SimpleDateFormat sdf =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.000Z'");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(sdf.format(currentTime));
answered Mar 17, 2019 at 20:42
Pablo ChvxPablo Chvx
1,74917 silver badges31 bronze badges
I was getting the same error on my IIS 7.5 server. I forgot to add Read permission on the certificate’s private key to the app pool virtual account (e.g. IIS AppPoolASP.NET v4.0).
For info, whilst testing various combinations of accounts and permissions, I noticed that the app pool needed to be recycled to lose access to the key, once it had been retrieved once.
(0x80131501 — An error occurred when verifying security for the message.)
answered Apr 8, 2013 at 5:57
ssg31415926ssg31415926
1,0172 gold badges13 silver badges21 bronze badges
I was getting the same error and none of the above help for me.
I finally tracked it down to connectionStrings in a parent web.config (my service was deployed to a child application to an admin site).
Yes sounds ridiculous, but as soon as I wrapped the connection strings in the parent web.config with a location element all started working.
For clarity, in parent web.config, I changed this
<connectionStrings>
<add name="..." />
</connectionStrings>
to this
<location path="." inheritInChildApplications="false">
<connectionStrings>
<add name="..." />
</connectionStrings>
</location>
Note this error also resulted in this very unhelpful serviceSecurityAudit log message:
Message authentication failed.
Service: …
Action: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
ClientIdentity:
ActivityId:
ArgumentNullException: Value cannot be null.
Parameter name: manager
answered Sep 6, 2016 at 12:30
I was getting the same error. I forgot to add Read permission on the membership database aspnetdb to the (IIS APPPOOLDefaultAppPool).
Message authentication failed. Service:….
Action: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
ClientIdentity:
ActivityId:
SqlException: Cannot open database «aspnetdb» requested by the login. The login failed.
Login failed for user ‘IIS
APPPOOLDefaultAppPool’.
answered Dec 19, 2016 at 7:24
The username and password is the server you connection,not your
system login username and password.
answered Dec 23, 2015 at 9:05
MapleStoryMapleStory
6183 gold badges11 silver badges21 bronze badges
У меня проблема с подключением к моей службе WCF с помощью clientCredentialType="UserName"
.
Когда я запускаю код ниже, я получаю сообщение об ошибке
FaultException: при проверке безопасности для сообщения произошла ошибка.
При игре с некоторыми значениями привязки я также получаю Access is denied.
.
Fiddler говорит, что нет заголовка авторизации, и я не могу найти имя пользователя или пароль в запросе.
Вот выдержки из моего конфига:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<services>
<service name="InventoryServices.MobileAPI" behaviorConfiguration="customBehaviour">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="secureHttpBinding"
contract="InventoryServices.IMobileAPI"/>
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="customBehaviour">
<serviceSecurityAudit auditLogLocation="Application" serviceAuthorizationAuditLevel="Failure" messageAuthenticationAuditLevel="Failure" suppressAuditFailure="true" />
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="InventoryLibrary.Helpers.UserAuthentication,InventoryLibrary"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="secureHttpBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Basic" proxyCredentialType="Basic" realm="MyRealm"/>
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
Мой валидатор имени пользователя/пароля выглядит так:
public class UserAuthentication : UserNamePasswordValidator {
public override void Validate(string userName, string password) {
EntitiesContext db = new EntitiesContext();
db.Logs.Add(new DomainModels.Log() {
DateLogged = DateTime.Now,
Message = "hit auth",
Type = DomainModels.LogType.Info
});
db.SaveChanges();
try {
if (userName == "test" && password == "test123") {
Console.WriteLine("Authentic User");
}
}
catch (Exception ex) {
throw new FaultException("Unknown Username or Incorrect Password");
}
}
}
У меня это как простой тест на моем сервисе:
[OperationContract]
[XmlSerializerFormat]
void Test();
[PrincipalPermission(SecurityAction.Demand, Name = "test")]
public void Test() {
}
У меня есть собственный сертификат SSL на моем сервере, и я могу получить доступ к своим сервисам/метаданным.
Затем я добавил ссылку на службу в консольном приложении и попытаюсь подключиться к службе с помощью этого кода ниже:
class Program {
static void Main(string[] args) {
Stuff.InitiateSSLTrust();
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.Realm = "MyRealm";
ServiceReference1.MobileAPIClient serviceProxy = new ServiceReference1.MobileAPIClient(binding, new EndpointAddress("https://xx.xx.xx.xx/InventoryServices.MobileApi.svc"));
serviceProxy.ClientCredentials.UserName.UserName = "test";
serviceProxy.ClientCredentials.UserName.Password = "test123";
try {
var a = serviceProxy.Login("a", "b");
}
catch (Exception ex) {
var ex2 = ex;
}
}
}
public class Stuff {
public static void InitiateSSLTrust() {
try {
//Change SSL checks so that all checks pass
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback(
delegate { return true; }
);
}
catch (Exception ex) {
}
}
}
Я проверил средство просмотра событий на сервере, и эта ошибка появляется с каждым запросом:
MessageSecurityException: процессору безопасности не удалось найти заголовок безопасности в сообщении. Это может быть связано с тем, что сообщение является необеспеченной ошибкой или потому, что существует связующее несоответствие между общающимися сторонами. Это может произойти, если служба настроена для обеспечения безопасности, а клиент не использует безопасность.
Ответ 1
Вы указываете стороне клиента использовать BasicHttpSecurityMode.Transport
, тогда как служба ожидает BasicHttpSecurityMode.TransportWithMessageCredential
. Это проблема, потому что служба ищет учетные данные клиента в заголовке сообщения SOAP, и клиент не отправит их с привязкой, сконфигурированной таким образом.
Следовательно, поэтому пара имени пользователя/пароля отсутствует в заголовке сообщения, когда вы являетесь свидетелем. Таким образом, зритель событий был прав, что между связующими сторонами имело место несовпадение.
Также установите ClientCredentialType
на клиенте BasicHttpMessageCredentialType.UserName
для Message
уровня безопасности. По умолчанию BasicHttpBinding
использует None
, которые являются анонимными клиентами.
Здесь фрагмент кода, описывающий вышеизложенные изменения:
var basicHttpBinding = new BasicHttpBinding(
BasicHttpSecurityMode.TransportWithMessageCredential);
basicHttpBinding.Security.Message.ClientCredentialType =
BasicHttpMessageCredentialType.UserName;
Ответ 2
Это также может быть вызвано отсутствием синхронизации между клиентом и сервером. Если сертификат или подписанный токен являются недействительными по времени, то может быть возвращено то же сообщение An error occurred when verifying security for the message.
.
- Remove From My Forums
-
Вопрос
-
Добрый день, господа. Подскажите, куда копать.
Windows Server 2008 R2 32 bit.
В IIS развернут узел, — сайт web-forms,с аутентификацией по сертификату.
Есть ссылка на wcf, от которой получает данные.
При запускe на iisexpress через VS2013 в режиме отладки — все хорошо. После публикации и размещения на вышеуказанном сервере — вот такая ошибка:
Ошибка сервера в приложении ‘/’.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
Сведения об исключении: System.ServiceModel.FaultException: An error occurred when verifying security for the message.
Ошибка источника:
Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.
Трассировка стека:
[FaultException: An error occurred when verifying security for the message.] [MessageSecurityException: Незащищенное или неправильно защищенное сообщение об ошибке было получено от другой стороны. Код ошибки и описание см. внутреннее исключение.] System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +10818447 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +336 Service_portal.ServiceReference.IHotLine.GetData(String ProcName, CustomParams[] _params, String DBname) +0 Service_portal.ContactClass.AddParams(String name, String value, String proc, String dbnum) +276 Service_portal.ControlDistionary.Page_Load(Object sender, EventArgs e) +59 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +92 System.Web.UI.Control.LoadRecursive() +54 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772
- Перемещено
26 марта 2015 г. 11:36
- Перемещено
Ответы
-
Здравствуйте,
Похоже на ошибку с WCF, как одна из возможных причин, если время клиента и сервера отличается более чем на 10 минут, то не удастся пройти
проверку безопасности .
Best Regards, Andrei …
Microsoft Certified Professional- Предложено в качестве ответа
Tomas Lilov
26 марта 2015 г. 12:30 - Помечено в качестве ответа
Иван ПродановMicrosoft contingent staff, Moderator
31 марта 2015 г. 7:50
- Предложено в качестве ответа
- Remove From My Forums
-
Question
-
Hello,
We have a wcf service hosted in IIS. We used
basicHttpBinding
and implemented a UserNamePasswordValidator for the custom authentication.However, we have issues when the WCF is consumed with a asmx client.
An error occurred when verifying security for the message.
(because asmx client can only work
basicHttpBinding
with transport security. basic authentication is disabled.)Here is my security config
<security mode="TransportWithMessageCredential"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security>
what are the solutions? We thought of using a simple Message Header for the authentication, however we don’t want to pass the credentials in the parameters of the method call
var s = new service.TaskService(); s.GetSomething(credential, TaskNumber); //not nice...
- Edited by
Tuesday, June 4, 2013 7:58 AM
- Edited by
Answers
-
Maybe the following links can help you to sort out what the problem is: http://stackoverflow.com/questions/3765212/an-error-occurred-when-verifying-security-for-the-message
http://blogs.microsoft.co.il/blogs/urig/archive/2011/01/23/wcf-quot-an-error-occurred-when-verifying-security-for-the-message-quot-and-service-security-audit.aspx
Like I wrote before, you should be able to use a UserNamePasswordValidator with basicHttpBinding by using the Message security mode with a certificate or the TransportWithMessageCredential security mode with SSL.
- Edited by
Magnus (MM8)MVP
Tuesday, June 4, 2013 2:22 PM - Marked as answer by
Haixia_Xie
Tuesday, June 11, 2013 7:43 AM
- Edited by
-
- Marked as answer by
Haixia_Xie
Tuesday, June 11, 2013 7:43 AM
- Marked as answer by
- Remove From My Forums
-
Question
-
Hello,
We have a wcf service hosted in IIS. We used
basicHttpBinding
and implemented a UserNamePasswordValidator for the custom authentication.However, we have issues when the WCF is consumed with a asmx client.
An error occurred when verifying security for the message.
(because asmx client can only work
basicHttpBinding
with transport security. basic authentication is disabled.)Here is my security config
<security mode="TransportWithMessageCredential"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security>
what are the solutions? We thought of using a simple Message Header for the authentication, however we don’t want to pass the credentials in the parameters of the method call
var s = new service.TaskService(); s.GetSomething(credential, TaskNumber); //not nice...
- Edited by
Tuesday, June 4, 2013 7:58 AM
- Edited by
Answers
-
Maybe the following links can help you to sort out what the problem is: http://stackoverflow.com/questions/3765212/an-error-occurred-when-verifying-security-for-the-message
http://blogs.microsoft.co.il/blogs/urig/archive/2011/01/23/wcf-quot-an-error-occurred-when-verifying-security-for-the-message-quot-and-service-security-audit.aspx
Like I wrote before, you should be able to use a UserNamePasswordValidator with basicHttpBinding by using the Message security mode with a certificate or the TransportWithMessageCredential security mode with SSL.
- Edited by
Magnus (MM8)MVP
Tuesday, June 4, 2013 2:22 PM - Marked as answer by
Haixia_Xie
Tuesday, June 11, 2013 7:43 AM
- Edited by
-
- Marked as answer by
Haixia_Xie
Tuesday, June 11, 2013 7:43 AM
- Marked as answer by
Для работы с WCF-сервисами по защищенному соединению в проекте MVC в файл Global.asax добавил следующую строку:
protected void Application_Start()
{
...
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate (object s, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; };
...
}
В WCF-сервисах внес изменения в конфигурационный файл, поменял тип безопасности с Message на TransportWithMessageCredential:
<ws2007FederationHttpBinding>
<binding openTimeout="00:05:00" closeTimeout="00:05:00" receiveTimeout="00:25:00" sendTimeout="00:25:00">
<security mode="TransportWithMessageCredential">
<message establishSecurityContext="false"
issuedKeyType="BearerKey">
<issuerMetadata address="https://xxx/issue/wstrust/mex" />
<issuer address="https://xxx/issue/wstrust/message/username"></issuer>
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
И немного увеличил таймауты. Еще добавил в Identity.config мэнеджер:
<system.identityModel>
<identityConfiguration>
<claimsAuthorizationManager type="xxx.AuthorizationManager, xxx" />
...
</identityConfiguration>
</system.identityModel>
Содержимое самого менеджера для начала сделал примитивно простым. Затем можно будет дополнительно настроить безопасность с помощью него, но пока все выглядит так:
using System.Collections.ObjectModel;
using System.Security.Claims;
using System.Security.Principal;
public class AuthorizationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
Collection<Claim> resource = context.Resource;
Collection<Claim> action = context.Action;
ClaimsPrincipal principal = context.Principal;
IIdentity пользователь = principal.Identity;
return true;
//return base.CheckAccess(context);
}
}
Также, в файле конфигурации сервисов, для каждого сервиса задал описания, по какой привязке будет работать каждый:
<services>
<service name="xxx.WsFedService">
<endpoint contract="xxx.Interfaces.IWsFedService"
binding="ws2007FederationHttpBinding"/>
<service name="xxx.BasicService">
<endpoint contract="xxx.Interfaces.IBasicService"
binding="basicHttpBinding"/>
...
</service>
</services>
Пожалуй, самой главной проблемой, оказалась кодировка файла конфигурации. Немного ранее я настраивал все на тестовом стенде и все работало. Но у нас в проекте произошли некоторые изменения и мы перешли с VS2013 на VS2015. Понадобился один день, чтобы найти причину. Я просто взял и написал весь конфиг руками с нуля. Конфиг оказался почти копией того, что был ранее, но все же я внес некоторые изменения, которые описал в ответе. В общем — все работает так как нужно и я буду рад, если кому-то смог помочь решить подобную проблему.
CommonUsr |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 12 раз |
Добрый день! При настройке dss возникла проблема. Доступ в админку имеется. Но при переходе в раздел «Пользователи» https://<host>/sts/admins/users/list выпадает сообщение: «Недопустимый URI: Невозможно выполнить разбор имени хоста.» В логах фиксируется: |
|
|
Андрей Писарев |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 457 раз |
А значение host покажите или будем дальше гадать? |
Техническую поддержку оказываем тут |
|
|
WWW |
CommonUsr |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 12 раз |
Вы про <host>? Да я без умысла его спрятал. cpca20 |
|
|
khomenko |
|
Статус: Активный участник Группы: Администраторы, Участники Поблагодарили: 15 раз в 14 постах |
Добрый день, Скорей всего у вас недонастроен Центр Идентификации DSS. |
|
|
|
CommonUsr
оставлено 12.11.2014(UTC) |
CommonUsr |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 12 раз |
Спасибо большое. |
|
|
CommonUsr |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 12 раз |
При попытке зайти в «Управление пользователем» выпадает «Ошибка при получении политики сервера подписи». ERROR : Произошла ошибка во время работы контроллера DSS.Web.Frontend.Controllers.UsersController Server stack trace: Exception rethrown at [0]: Просморел все настройки. Единственно, что показалось не так: отсутсвовал параметр PrivateCabUrl при вызове Get-DSSIdentityProvider. Установил значение https://<host>/STS/Users/UserPrivateCab/ |
|
|
khomenko |
|
Статус: Активный участник Группы: Администраторы, Участники Поблагодарили: 15 раз в 14 постах |
Здравствуйте, В руководстве администратора DSS в разделе 6.2.11 — опечатка в адресе Сервера подписи Выполните команду: Отредактировано пользователем 13 ноября 2014 г. 18:05:03(UTC) |
|
|
|
CommonUsr
оставлено 14.11.2014(UTC) |
CommonUsr |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 12 раз |
Добрый день! Спасибо помогло. Так же была еще одна ошибка «Алгоритм ключа сертификата не поддерживается». Видимо из-за того, что сервисный сертификат у меня был ГОСТовый и он же был привязан в IIS (на тестовой машине развернул уц и дсс вместе). Без гостового сертификата в привязках ЦР терял связь с ЦС, поэтому обошелся отдельным rsa сертом для сервисов DSS и гостовым для IIS. |
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
I have the below given setting in my web.config of my WCF service, this was working fine till today and suddenly started giving the error «An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail.» I have verified the time in my server and client it’s same.
Any thoughts?
<bindings>
<customBinding>
<binding name="stsBinding">
<security authenticationMode="UserNameOverTransport" requireDerivedKeys="false"
keyEntropyMode="ServerEntropy" requireSecurityContextCancellation="false"
requireSignatureConfirmation="false">
</security>
<httpsTransport maxReceivedMessageSize="66665536"/>
</binding>
</customBinding>
<wsFederationHttpBinding>
<binding name="serviceFederation">
<readerQuotas maxStringContentLength="2147483647"
maxDepth="2147483647"
maxBytesPerRead="2147483647"
maxArrayLength="2147483647"/>
<security mode="TransportWithMessageCredential">
<!-- Ping token type MUST be SAML 1.1, do not change -->
<message issuedTokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1"
negotiateServiceCredential="false">
<!-- TODO: You must put the proper issuer URN of the Ping STS; normally this would be the Ping base URL -->
<issuer address="https://my-sso-server.com"
binding="customBinding" bindingConfiguration="stsBinding" />
</message>
</security>
</binding>
asked Nov 10, 2010 at 15:29
Things to check:
- Is there any windows patch that has been installed, sometimes this tightens security and stops things working.
- Is there a password that has expired, often the cause when things stop working.
answered Nov 10, 2010 at 16:38
Shiraz BhaijiShiraz Bhaiji
63.7k33 gold badges143 silver badges248 bronze badges
0
19 ответов
Это очень непонятная ошибка, которую бросают службы WCF. Проблема в том, что WCF не может проверить безопасность сообщения, которое было передано службе.
Это почти всегда из-за перекоса сервера. Удаленный сервер и время системы клиента должны находиться в пределах (обычно) 10 минут друг от друга. Если это не так, проверка безопасности не удастся.
Я бы назвал eloqua.com и узнал, что у них на сервере, и сравним это с вашим сервером.
Randolpho
09 янв. 2010, в 01:13
Поделиться
Хотя ваша проблема была решена с помощью одного из вышеперечисленных решений, в интересах других, здесь есть еще один вариант.
Вы также можете получить это исключение, когда неверные учетные данные передаются на базовую конечную точку (SOAP 1.1), которая использует учетные данные пользователя, как вы. Например, если вы вызываете службу из кода и делаете что-то вроде этого:
var service = new TestService();
service.ClientCredentials.UserName.UserName = "InvalidUser";
service.ClientCredentials.UserName.Password = "InvalidPass";
Это отличается от конечной точки WSHTTP (SOAP 1.2), которая выдает AccessDeniedException
, когда пропускаются недопустимые учетные данные. Я лично считаю, что содержащееся здесь сообщение мало вводит в заблуждение (это, безусловно, стоило мне нескольких минут, когда я впервые столкнулся с этим по этой причине), но основная причина была ясна, когда я консультировался с журналами трассировки диагностики WCF.
Xcalibur
02 сен. 2011, в 09:00
Поделиться
У вас, очевидно, проблема с подсистемой безопасности WCF. Какая привязка вы используете? Какая аутентификация? Шифрование? Подписание? Вам нужно пересечь границы домена?
Немного оглядываясь дальше показывает, что другие испытывают эту ошибку, если часы клиента и сервера не синхронизированы (более пяти минут), потому что некоторые схемы безопасности полагаются на синхронизированные часы.
Daniel Brückner
27 сен. 2009, в 23:27
Поделиться
Такая же проблема, с которой я столкнулся с моим клиентским приложением, — это приложение WinForms С# 4.0
Когда я прочитал здесь решение, я проверил дату и время клиентского компьютера, но это было правильно, и текущее время показывалось, но все же я столкнулся с этой проблемой.
После некоторого рабочего дня я обнаружил, что выбран неправильный часовой пояс, я в Индии, а часовой пояс — в Канаде, хост-сервер находится в Кувейте.
Я обнаружил, что система преобразует время в универсальное время.
Когда я изменил часовой пояс в часовом поясе Индии, проблема была подобрана.
Haider Ali Wajihi
31 авг. 2013, в 14:42
Поделиться
Если вы передаете учетные данные пользователя от клиента (согласно приведенному ниже блоку кода), он должен совпадать с именем пользователя/паролем на сервере. в противном случае вы получите эту ошибку.
FYI, в моем случае я использую «basicHTTPAuthentication» с режимом безопасности «TransportWithMessageCredential». И служба WCF размещена в IIS на https.
var service = new TestService();
service.ClientCredentials.UserName.UserName = "InvalidUser";
service.ClientCredentials.UserName.Password = "InvalidPass";
Надеюсь, это поможет кому-то…:)
user2206393
25 март 2013, в 07:42
Поделиться
Попробуйте изменить режим безопасности на «транспорт».
У вас есть несоответствие между тегом безопасности и транспортным тегом.
Shiraz Bhaiji
01 окт. 2009, в 16:01
Поделиться
В моем случае, когда я изменил протокол wshttpbinding
от https
до http
, он начал работать.
chintan
18 май 2012, в 08:13
Поделиться
Для чего это стоит — у меня также была эта ошибка и я обнаружил, что она была вызвана строкой соединения в веб-службах, где web.config настроен на подключение к неправильной машине.
Chris B
19 июль 2011, в 14:57
Поделиться
Просто ради обмена… У меня был редкий случай, который заставил меня почесывать затылок на несколько минут. Даже в то время, когда решение по перекос было очень точным, и я решил эту проблему раньше, на этот раз было иначе. Я был на новой машине Win8.1, которую я помню, имея проблему с часовым поясом, и я вручную скорректировал время. Ну, я продолжал получать ошибку, несмотря на то, что время, отображаемое на сервере, и у клиента было только разницей в секундах. То, что я сделал, это активировать «летнее сохранение» (обратите внимание, что я действительно в летнее время, но при настройке времени вручную) в «настройке даты и времени» затем перешел в раздел времени в Интернете и обновил… время в мой компьютер сохранял то же самое, но ошибка исчезла.
Надеюсь, это полезно для всех!
Jemil Marcos
02 авг. 2015, в 17:28
Поделиться
В моем случае я использовал сертификаты для проверки подлинности с помощью параметра certificateValidationMode, установленного в «PeerTrust», и я забыл установить сертификат клиента в хранилище Windows (LocalMachineTrustedPeople), чтобы сделать его принятым сервером.
Milton Carranza
28 июль 2015, в 18:35
Поделиться
В моем случае я получал эту ошибку на той же машине, в своем тестовом клиент-серверном приложении. Но эта проблема была решена с помощью «Справочной службы обновления».
- Тушар Г. Валабалкар
user605172
06 фев. 2011, в 10:30
Поделиться
У меня также была эта проблема из справочной службы, устаревшей, даже с сервером и клиентом на том же компьютере. Запуск «Update Service Reference» обычно исправляет это, если это проблема.
Sam
24 авг. 2010, в 06:44
Поделиться
Мне пришлось изменить SecurityMode на Message (WSHttpBinding), прежде чем он сработает. т.е.
_wcf = new ServiceRequestClient(new WSHttpBinding(SecurityMode.Message),
new EndpointAddress(_wcfRequestServerAddress));
JarmoP
14 дек. 2017, в 12:28
Поделиться
<wsHttpBinding>
<binding name="ISG_Binding_Configuration" bypassProxyOnLocal="true" useDefaultWebProxy="false" hostNameComparisonMode="WeakWildcard" sendTimeout="00:30:00" receiveTimeout="00:30:00" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">
<readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
<security mode="None">
<message establishSecurityContext="false" clientCredentialType="UserName"/>
</security>
</binding>
</wsHttpBinding>
Ankit Jain
19 июль 2017, в 12:24
Поделиться
В большинстве случаев это исключение возникает, когда на сервере возникают ошибки, наиболее распространенная из них — неправильная конфигурация базы данных аутентификации или аутентификация. В моем случае была другая синхронизация часов
убедитесь, что оба клиента и сервера имеют одинаковые настройки
Нажмите «Время на стороне справа» → «Изменить параметры времени…» → «Время в Интернете» → Изменить настройки… → установите флажок «Синхронизировать с интернет-сервером времени» если он не установлен → из раскрывающегося списка сервера выберите «times.windows.com» → Обновить сейчас → ОК
Adeel Nazir
14 март 2017, в 09:38
Поделиться
Я получал эту ошибку из-за того, что BasicHttpBinding не отправлял совместимое messageVersion в службу, которую я вызывал. Мое решение состояло в том, чтобы использовать пользовательскую привязку, как показано ниже
<bindings>
<customBinding>
<binding name="Soap11UserNameOverTransport" openTimeout="00:01:00" receiveTimeout="00:1:00" >
<security authenticationMode="UserNameOverTransport">
</security>
<textMessageEncoding messageVersion="Soap11WSAddressing10" writeEncoding="utf-8" />
<httpsTransport></httpsTransport>
</binding>
</customBinding>
</bindings>
Lukie
20 фев. 2015, в 03:41
Поделиться
Попробуйте следующее:
catch (System.Reflection.TargetInvocationException e1)
String excType
excType = e1.InnerException.GetType().ToString()
choose case excType
case "System.ServiceModel.FaultException"
System.ServiceModel.FaultException e2
e2 = e1.InnerException
System.ServiceModel.Channels.MessageFault fault
fault = e2.CreateMessageFault()
ls_message = "Class: uo_bcfeWS, Method: registraUnilateral ~r~n" + "Exception(1): " + fault.Reason.ToString()
if (fault.HasDetail) then
System.Xml.XmlReader reader
reader = fault.GetReaderAtDetailContents()
ls_message += " " + reader.Value
do while reader.Read()
ls_message += reader.Value
loop
end if
case "System.Text.DecoderFallbackException"
System.Text.DecoderFallbackException e3
e3 = e1.InnerException
ls_message = "Class: uo_bcfeWS, Method: registraUnilateral ~r~n" + "Exception(1): " + e3.Message
case else
ls_message = "Class: uo_bcfeWS, Method: registraUnilateral ~r~n" + "Exception(1): " + e1.Message
end choose
MessageBox ( "Error", ls_message )
//logError(ls_message)
return false
Omar Trinidad Chavez Mojarro
12 дек. 2014, в 03:30
Поделиться
Убедитесь, что ваш SendTimeout
не прошел после открытия клиента.
albertjan
30 июль 2014, в 09:05
Поделиться
В моем случае есть две проблемы, которые будут генерировать это исключение.
Обратите внимание, что моя среда использует Single Sign On (или STS, если хотите) для аутентификации пользователя через сайт MVC ASP.NET. Сайт MVC, в свою очередь, вызывает вызов службы к моей конечной точке службы, передавая токен-носитель, который он запрашивал с сервера STS с токеном Bootstrap ранее. Ошибка, которую я получил, — это когда я сделал вызов службы с сайта MVC.
-
Служба WCF не была настроена как полагающаяся сторона в моем SSO (или STS, если вы предпочитаете).
-
Конфигурация сервиса не была настроена должным образом. В частности, для аудитории uris node для system.identityModel. Он должен точно соответствовать URL-адресу конечной точки службы.
<system.identityModel> <identityConfiguration> <audienceUris> <add value="https://localhost/IdpExample.YService/YService.svc" /> </audienceUris> .... </identityConfiguration> </system.identityModel>
stack247
13 июнь 2014, в 01:09
Поделиться
Ещё вопросы
- 1Как я могу удалить список языковых настроек в исходном уровне Android?
- 0MySQL, как найти общие данные в нескольких таблицах
- 0Allegro5: выводит инт на экран
- 0Angular требует два клика, чтобы показать местоположение Google Geocode
- 1Как читать PDF-файлы на азиатских языках (китайский, японский, тайский и т. Д.) И хранить их в виде строки в python
- 0Код Jquery для разделения ссылки href
- 1Одинаковые элементы массива
- 0CMAC: очень длинное целое число в качестве начального числа для функции random ()
- 1Массовая вставка текстового файла в SQL Server с помощью pymssql
- 1OAuth Google Plus войдите в систему: 400. Это ошибка. Ошибка: redirect_uri_mismatch
- 0JQuery добавление входного Val вместе
- 0Как работать с сим-данными по дифференциальным уравнениям
- 0Угловая директива для пользовательской проверки
- 1Hibernate softdelete — индекс столбца вне диапазона исключений при мягком удалении
- 0как вызвать функцию angular синхронно, чтобы вернуть результат функции вне angular
- 1Вектор Drawable внутри Layer-List растягивается
- 0Программа не запускается (.exe не может быть найден)
- 1NotFoundError: Тензорное имя «Предсказание / InceptionResnetV2 / AuxLogits / Conv2d_1b_1x1 / BatchNorm / beta» не найдено в файлах контрольных точек
- 1Понимание 3D-моделей и узлов в Libgdx
- 0G ++ с Mountain Lion поддерживает -msse4.2?
- 0Жасмин тест для угловой директивы не работает
- 1словарь ключа и списка — удалить ключ, если какое-либо значение в списке отсутствует
- 0@media не работает правильно для меня
- 0Вызов метода производного класса из общей ссылки на базовый класс
- 0Не могу получить подготовленное заявление для печати в php
- 0Флажок манипулирования вводом
- 1Рельсы — относительные пути — методы
- 0C ++ store количество раз, когда main называется [closed]
- 1Как контролировать отображение окон tkinter Toplevel?
- 1Рекурсивный метод изменения словаря во время итерации
- 1Офлайновые фрагменты в объемных данных
- 0Строки исчезают на Datatables?
- 0Перетащите информацию таблицы?
- 0Динамический CSS с AnguarJS / Ionic Framework
- 1JAXP — поиск в каталоге отладки XSD
- 0Как получить время 2 часа от текущего времени в IONIC
- 0Сортировка списка, содержащего классы, на основе закрытых членов класса
- 0Стандартный метод обработки не найденных (404) ошибок во всех видах веб-серверов
- 0C # UWP Форма входа, проверяющая учетные данные в удаленной базе данных MySQL
- 0Mustache_Autoloader отсутствует с Composer
- 1Попытка понять сложность пространства вывода каскадных строк
- 1Websocket не может установить соединение
- 0Fat Free Framework возвращает ошибку 404 с пользовательскими маршрутами
- 0PHP — извлекать числа и заключать их в <span>
- 0Запустите .exe файл кода C, используя Eclipse
- 0Я пытаюсь сделать регистрационную форму с MySQL в Java, и это дает мне ошибку
- 0проверочный код с <a> <noscript>
- 1Как найти приблизительные координаты из четырех разных списков и координат
- 0Время компиляции сгенерированный идентификатор типа константы
- 0Создайте «форму расчета» в javascript
настройки сервера:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceCredentialsBehavior">
<serviceCredentials>
<serviceCertificate findValue="cn=cool" storeName="TrustedPeople" storeLocation="CurrentUser" />
</serviceCredentials>
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="ServiceCredentialsBehavior" name="Service">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="MessageAndUserName" name="SecuredByTransportEndpoint" contract="IService"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="MessageAndUserName">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<client/>
</system.serviceModel>
<system.web>
<compilation debug="true"/>
</system.web>
конфигурация моего клиента:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="LocalCertValidation">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="PeerTrust" trustedStoreLocation="CurrentUser" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IService" >
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:48097/WCFServer/Service.svc"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IService"
contract="ServiceReference1.IService"
name="WSHttpBinding_IService" behaviorConfiguration="LocalCertValidation">
<identity>
<dns value ="cool" />
</identity>
</endpoint>
</client>
</system.serviceModel>
сервис:
public string TestAccess()
{
return OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name;
}
клиент:
ServiceClient client = new ServiceClient();
client.ClientCredentials.UserName.UserName = "Admin";
client.ClientCredentials.UserName.Password = "123";
Console.WriteLine(client.TestAccess());
Console.ReadLine();
ошибка:
Незащищенное или неправильно защищенное сообщение об ошибке было получено от другой стороны. См для код ошибки и описание.
внутреннее исключение:
По крайней мере один маркер безопасности в сообщении не удалось подтвердить.
как разрешить это исключение?
2 ответов
поскольку сообщение об ошибке довольно неясно, я подумал, что я бы поставил его там как другое возможное решение.
моя среда использует единый вход (или STS, если вы предпочитаете) для аутентификации пользователя через ASP.NET сайт MVC. Сайт MVC, в свою очередь, выполняет вызов службы в мою конечную точку службы, передавая маркер носителя, который он запросил у сервера STS с маркером начальной загрузки ранее. Ошибка, которую я получил, была, когда я сделал вызов службы с сайта MVC.
в моем случае, это вызвало по конфигурации моей службы, как указано ниже. В частности, узел audienceUris должен точно соответствовать конечной точке службы:
<system.identityModel>
<identityConfiguration>
<audienceUris>
<add value="https://localhost/IdpExample.YService/YService.svc" />
</audienceUris>
....
</identityConfiguration>
</system.identityModel>
HTH.
- Remove From My Forums
-
Вопрос
-
Добрый день, господа. Подскажите, куда копать.
Windows Server 2008 R2 32 bit.
В IIS развернут узел, — сайт web-forms,с аутентификацией по сертификату.
Есть ссылка на wcf, от которой получает данные.
При запускe на iisexpress через VS2013 в режиме отладки — все хорошо. После публикации и размещения на вышеуказанном сервере — вот такая ошибка:
Ошибка сервера в приложении ‘/’.
An error occurred when verifying security for the message.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
Сведения об исключении: System.ServiceModel.FaultException: An error occurred when verifying security for the message.
Ошибка источника:
Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.
Трассировка стека:
[FaultException: An error occurred when verifying security for the message.] [MessageSecurityException: Незащищенное или неправильно защищенное сообщение об ошибке было получено от другой стороны. Код ошибки и описание см. внутреннее исключение.] System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +10818447 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +336 Service_portal.ServiceReference.IHotLine.GetData(String ProcName, CustomParams[] _params, String DBname) +0 Service_portal.ContactClass.AddParams(String name, String value, String proc, String dbnum) +276 Service_portal.ControlDistionary.Page_Load(Object sender, EventArgs e) +59 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +92 System.Web.UI.Control.LoadRecursive() +54 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Control.LoadRecursive() +145 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772
-
Перемещено
26 марта 2015 г. 11:36
-
Перемещено
Ответы
-
Здравствуйте,
Похоже на ошибку с WCF, как одна из возможных причин, если время клиента и сервера отличается более чем на 10 минут, то не удастся пройти
проверку безопасности .
Best Regards, Andrei …
Microsoft Certified Professional-
Предложено в качестве ответа
Tomas Lilov
26 марта 2015 г. 12:30 -
Помечено в качестве ответа
Иван ПродановMicrosoft contingent staff, Moderator
31 марта 2015 г. 7:50
-
Предложено в качестве ответа