Ошибка unauthorized_client
Опубликовано Андрей Солдатов on 2023-05-15 01:31

При попытке выполнить регистрацию/обновление списка операций в мобильном приложении DSS Client появляется ошибка: "unauthorized_client"

Возможные причины возникновения ошибки:

1. В настройках сервиса взаимодействия с мобильным приложением (mDAG) указан некорректный секрет oauth-клиента, используемого для аутентификации mDAG на Центре Идентификации (ЦИ) DSS.

Диагностика:

Пример ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> myDSSApiGateway-> Admins»:
Error: authentication_failed
ErrorDescription: The authentication request failed. Response status 'BadRequest'. Reason Phrase 'Bad Request'. Message '{"error":"unauthorized_client","error_description":"The provided credentials of type 'SharedSecret' are invalid."}'.

Пример ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> IdentityService-> Admins»:
The credentials of type 'SharedSecret' with value '9PeUxytPcPb942PGYRsuX47LN4HgaT99' is not registered for client with id 'cryptopro.mydss.DSSClient'.

Рекомендуемое решение:

  1. На сервере с mDAG выполнить командлет: Get-MdagProperties -DisplayName "Имя приложения mDAG"
  2. Скопировать из вывода командлета значения параметров "ClientId" и "ClientSecret";
  3. На сервере с DSS выполнить командлет: Get-DssClientSecret -DisplayName "Имя приложения ЦИ" -ClientId "Значение ClientId из вывода прошлого командлета"
  4. Проверить, что значение секрета в полученном выводе соответствует значению "ClientSecret" из командлета, указанного в п. 1;
  5. Если в выводе командлета из п. 1 указано значение "ClientSecret", не соответствующее тому, что было получено в выводе командлета из п. 3 - выполнить на сервере с mDAG командлет: Set-MdagProperties -DisplayName "Имя приложения mDAG" -ClientSecret "Значение действующего секрета из вывода командлета п. 3"
  6. Перезапустить пул приложения mDAG (на всех узлах, в случае кластерного исполнения): Restart-MdagInstance -DisplayName "Имя приложения mDAG"

2. Истек срок действия секрета oauth-клиента, используемого для аутентификации mDAG на ЦИ DSS.

Диагностика:

Пример ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> myDSSApiGateway-> Admins»:
Error: authentication_failed
ErrorDescription: The authentication request failed. Response status 'BadRequest'. Reason Phrase 'Bad Request'. Message '{"error":"unauthorized_client","error_description":"The provided credentials of type 'SharedSecret' are invalid."}'.

Пример ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> IdentityService-> Admins»:
The credentials for the client with id 'cryptopro.mydss.DSSClient' of a type 'SharedSecret' is invalid. Error 'unauthorized_client'. Additional info: [The provided credentials of type 'SharedSecret' expired at '15.05.2023 0:41:01 +03:00'.]

Рекомендуемое решение:

  1. На сервере с mDAG выполнить командлет: Get-MdagProperties -DisplayName "Имя приложения mDAG"
  2. Скопировать из вывода командлета значение параметра "ClientId";
  3. На сервере с DSS выполнить командлет для генерации нового секрета: Set-DssClient -DisplayName "Имя приложения ЦИ" -ClientId "Значение ClientId из вывода командлета п. 1" -GenerateSecret
  4. Получить значение нового секрета: Get-DssClientSecret -DisplayName "Имя приложения ЦИ" -ClientId "Значение ClientId из вывода командлета п. 1"
  5. Прописать значение нового секрета в настройках mDAG: Set-MdagProperties -DisplayName "Имя приложения mDAG" -ClientSecret "Значение нового секрета"
  6. Перезапустить пулы приложений ЦИ и mDAG (на всех узлах, в случае кластерного исполнения):

Restart-DssStsInstance -DisplayName "Имя приложения ЦИ"
Restart-MdagInstance -DisplayName "Имя приложения mDAG"

3. На уровне oauth-клиента, используемого для аутентификации mDAG на ЦИ DSS, не добавлены требуемые полномочия.

Диагностика:

Пример ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> myDSSApiGateway-> Admins»:
ErrorDescription: The authentication request failed. Response status 'BadRequest'. Reason Phrase 'Bad Request'. Message '{"error":"unauthorized_client","error_description":"The 'grant_type' parameter in the request is invalid. The client is not authorized to request tokens with the specified flow."}'.

Пример ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> IdentityService-> Admins»:
The 'grant_type' parameter in the request is invalid. The client with id 'cryptopro.mydss.DSSClient' is not authorized for using  the 'urn:cryptopro:dss:identity:oauth:grant-type:mydss' grant.

Рекомендуемое решение:

  1. На сервере с mDAG выполнить командлет: Get-MdagProperties -DisplayName "Имя приложения mDAG"
  2. Скопировать из вывода командлета значение параметра "ClientId";
  3. На сервере с DSS выполнить командлет для добавления требуемых полномочий oauth-клиента: Set-DssClient -DisplayName "Имя приложения ЦИ" -ClientId "Значение ClientId из вывода командлета п. 1" -AllowedFlow ClientCredentials,MyDssAssertion
  4. Перезапустить пул приложения ЦИ (на всех узлах, в случае кластерного исполнения): Restart-DssStsInstance -DisplayName "Имя приложения ЦИ"
(3 плюсик(ов))
Класс!
Не очень :(