Типовые ошибки при попытке выполнения авторизации на веб-интерфейсе сервисиса подписи.
1. "OpenIdConnectMessage. Error was not null, indicating an error, Error: 'unauthorized_client'. Error_Description (may be empty): 'The provided credentials of type 'SharedSecret' are invalid'. Error_uri (may be empty): 'error_uri is null'."
Диагностика: Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> IdentityService-> Admins».
Пример: Source: ClientCredentialsValidator. The credentials of type 'SharedSecret' with value 'secret_value' is not registered for client with id 'cryptopro.dss.frontend.frontend'.
Возможные причины возникновения ошибки: В настройках доступа по OpenId Connect веб-интерфейса указано значение секрета, не соответствующее зарегистрированному для oauth-клиента центра идентификации.
Рекомендуемое решение: - Отобразить список значений секретов для oauth-клиента центра идентификации (по умолчанию: cryptopro.dss.frontend.frontend), выполнив командлет: Get-DssClientSecret -ClientId cryptopro.dss.frontend.frontend|fl - Указать значение действующего секрета: Set-DssFeOidcSettings -ClientSecret <Значение секрета, полученное на прошлом шаге> - Перезапустить пул приложения веб-интерфейса: Restart-DssFeInstance
2. unauthorized_client
Диагностика: Ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> IdentityService-> Admins».
Примеры:
А) Source: ClientValidator. The credentials for the client with id 'cryptopro.dss.frontend.frontend' of a type 'SharedSecret' is invalid. Error 'unauthorized_client'. Additional info: [The provided credentials of type 'SharedSecret' expired at 'expiration_date'.]
Б) Source: AuthorizeRequestValidator. The 'client_id' parameter in the request is invalid. No registered client with id 'cryptopro.dss.frontend.frontends is found.'
В) Source: AuthorizeRequestValidator. The request is invalid. The client with id 'cryptopro.dss.frontend.frontend' is not allowed to use 'AuthorizationCode' flow.
Возможные причины возникновения ошибки: - В настройках доступа по OpenId Connect веб-интерфейса указано значение секрета с истекшим сроком действия; - В настройках доступа по OpenId Connect веб-интерфейса указан идентификатор oauth-клиента, который не зарегистрирован на центре идентификации; - В списке допустимых для oauth-клиента сценариев отсутствует сценарий "AuthorizationCode".
Рекомендуемое решение:
А) Проверка сроков действия секретов и генерация новых: - Отобразить список значений секретов для oauth-клиента центра идентификации (по умолчанию: cryptopro.dss.frontend.frontend), выполнив командлет: Get-DssClientSecret -ClientId cryptopro.dss.frontend.frontend|fl - Если сроки действия всех секретов истекли - сгенерировать новый секрет: Set-DssClient -ClientId cryptopro.dss.frontend.frontend -GenerateSecret -SecretLifetime 0 - Получить значение нового секрета: $secret = (Get-DssClientSecret -ClientId cryptopro.dss.frontend.frontend).value - Указать значение нового секрета в настройках доступа по OpenId Connect веб-интерфейса: Set-DssFeOidcSettings -ClientSecret $secret - Перезапустить пул приложения веб-интерфейса: Restart-DssFeInstance - Перезапустить пул приложения центра идентификации: Restart-DssStsInstance
Б) Проверка корректности указанного в настройках доступа по OpenId Connect веб-интерфейса идентификатора oauth-клиента центра идентификации: - Выполнить командлет: (Get-DssFeOidcSettings).ClientId - Убедиться, что клиент с идентификатором, полученным на прошлом шаге, есть в списке зарегистрированных на стороне центра идентификации. Идентификаторы клиентов можно получить, выполнив командлет: (Get-DssClient).ClientId - Если клиент не зарегистрирован - выполнить настройку в соответствие с примером.
В) Добавить для oauth-клиента необходимые сценарии использования: - Выполнить командлет: Set-DssClient -ClientId ((Get-DssFeOidcSettings).ClientId) -AllowedFlow AuthorizationCode,ClientCredentials,TokenExchange - Перезапустить пул приложения центра идентификации: Restart-DssStsInstance
3. Страница не найдена
Диагностика: Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> Frontend-> Admins».
Пример: Ошибка в Веб-приложении: The controller for path '/DssTest/oauth/authorize' was not found or does not implement IController. System.Web.HttpException: The controller for path '/DssTest/oauth/authorize' was not found or does not implement IController.
Возможные причины возникновения ошибки: В настройках доступа по OpenId Connect веб-интерфейса указаны некорректные адреса сервисов.
Рекомендуемое решение: Выполнить настройку доступа по OpenId Connect веб-интерфейса, в соответствие с примером.
4. «Запрос HTTP запрещен для схемы аутентификации клиентов "Anonymous"
Диагностика: Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> Frontend-> Admins».
Пример: В процессе работы Веб-интерфейса произошла ошибка: Произошла ошибка во время работы контроллера CryptoPro.DSS.Web.Frontend.Admins.Controllers.CertificatesController Действие List System.ServiceModel.Security.MessageSecurityException: Запрос HTTP запрещен для схемы аутентификации клиентов "Anonymous".
Возможные причины возникновения ошибки: - Для пулов приложений DSS не был предоставлен доступ к закрытым ключам сервисных сертификатов DSS; - В расширении EKU (Extended Key Usage) сервисных сертификатов DSS отсутствует назначение 1.3.6.1.5.5.7.3.2 - Проверка подлинности клиента; - В хранилище «Доверенные корневые центры сертификации» локального компьютера сервера DSS присутствуют несамоподписанные сертификаты; - В хранилище «Доверенные корневые центры сертификации» локального компьютера сервера DSS не установлены сертификаты издателей сервисных сертификатов DSS; - Невозможно выполнить проверку сервисных сертификатов DSS на отзыв.
Рекомендуемое решение: - Убедиться, что пулам приложений DSS был предоставлен доступ к закрытым ключам сервисных сертификатов DSS. - Убедиться, что в расширении EKU (Extended Key Usage) сервисных сертификатов DSS присутствует назначение 1.3.6.1.5.5.7.3.2 - Проверка подлинности клиента. - Удалить/перенести в другие хранилища несамоподписанные сертификаты из хранилища «Доверенные корневые центры сертификации» локального компьютера сервера DSS, если таковые имеются. Найти такие сертификаты можно, выполнив командлет: Get-Childitem cert:\LocalMachine\root -Recurse | Where-Object {$_.Issuer -ne $_.Subject} - Убедиться, что в хранилище «Доверенные корневые центры сертификации» локального компьютера сервера DSS установлены сертификаты издателей сервисных сертификатов DSS. - Обеспечить проверку сервисных сертификатов DSS на отзыв (путем установки CRL в хранилище «Промежуточные центры сертификации» локального компьютера сервера DSS или обеспечив доступность CRL по ссылкам, указанным в расширении "Точки распространения списков отзыва" сервисных сертификатов DSS).
5. Требуется делегирование
Диагностика: Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> Frontend-> Admins».
Пример: Идентификатор экземпляра: 1/Frontend. В процессе работы Веб-интерфейса произошла ошибка: Произошла ошибка во время работы контроллера CryptoPro.DSS.Web.Frontend.Controllers.CertificatesController Действие List System.ServiceModel.FaultException`1[[CryptoPro.DSS.Common.Service.DssFault, CryptoPro.DSS.Common, Version=1.17.0.0, Culture=neutral, PublicKeyToken=cb703a801b9b4b55]]: Требуется делегирование.
Возможные причины возникновения ошибки: В рамках одной сессии браузера была выполнена попытка сперва авторизоваться в личном кабинете оператора, а затем - в веб-интерфейсе сервиса подписи.
Рекомендуемое решение: - Перезапустить браузер и попробовать еще раз авторизоваться в веб-интерфейсе сервиса подписи; - Открыть новую вкладку браузера в режиме «Инкогнито», и авторизоваться через нее в веб-интерфейсе сервиса подписи.
6. Message: Authorization has been denied for this request
Диагностика: Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> SignServer-> Admins».
Пример: Instance Unique Identifier: 1/signserver Source: Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware Message: Authentication failed System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10505: Unable to validate signature. The 'Delegate' specified on TokenValidationParameters, returned a null SecurityKey.
Возможные причины возникновения ошибки: - На сервисе подписи не настроены отношения доверия с центром идентификации; - Истек срок действия сервисного сертификата сервиса подписи.
Рекомендуемое решение: - Запросить отпечаток сервисного сертификата ЦИ: $idp_cert = (Get-DssStsProperties).ServiceCertificate - Указать отпечаток сервисного сертификата ЦИ на сервисе подписи: Add-DssClaimsProviderTrust -IssuerName realsts -Thumbprint $idp_cert Примечание: если при выполнении второго командлета в Powershell возникла ошибка "Доверенный издатель с именем realsts уже добавлен в коллекцию" - необходимо выполнить командлет: Set-DssClaimsProviderTrust -IssuerName realsts -NewThumbprint $idp_cert - Проверить срок действия сервисного сертификата сервиса подписи. Если срок действия истек - необходимо перевыпустить его и скорректировать настройки в соответствие с руководством; - Перезагрузить пулы приложений центра идентификации и сервиса подписи, выполнив командлеты: Restart-DssStsInstance и Restart-DssSignServerInstance
7. IDX10505: Unable to validate signature. The 'Delegate' specified on TokenValidationParameters, returned a null SecurityKey.
Диагностика: Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> Frontend-> Admins».
Пример: Instance Unique Identifier: 1/frontend Source: Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware Message: Authentication failed System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10505: Unable to validate signature. The 'Delegate' specified on TokenValidationParameters, returned a null SecurityKey.
Возможные причины возникновения ошибки: - На веб-интерфейсе не настроены отношения доверия с центром идентификации; - Истек срок действия сервисного сертификата веб-интерфейса.
Рекомендуемое решение: - Запросить отпечаток сервисного сертификата ЦИ: $idp_cert = (Get-DssStsProperties).ServiceCertificate - Указать отпечаток сервисного сертификата ЦИ на веб-интерфейсе: Add-DssFeClaimsProviderTrust -IssuerName realsts -Thumbprint $idp_cert Примечание: если при выполнении второго командлета в Powershell возникла ошибка "Доверенный издатель с именем realsts уже добавлен в коллекцию" - необходимо выполнить командлет: Set-DssFeClaimsProviderTrust -IssuerName realsts -NewThumbprint $idp_cert - Проверить срок действия сервисного сертификата веб-интерфейса. Если срок действия истек - необходимо перевыпустить его и скорректировать настройки в соответствие с руководством; - Перезагрузить пулы приложений центра идентификации и веб-интерфейса, выполнив командлеты: Restart-DssStsInstance и Restart-DssFeInstance
|