Статус: Новичок
Группы: Участники
Зарегистрирован: 08.09.2017(UTC) Сообщений: 2
|
Собственно есть DSS поднятый полностью на сайте с гост алгоритмами. Пытаюсь подключится используя примеры - вываливается exception: Цитата:Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: ID4184: The EncryptingCredentials provided in the SecurityTokenDescriptor must not be null if Scope.TokenEncryptionRequired is set to true. This can be caused by the Scope specifying an unsupported encryption key type, or by the incoming RequestSecurityToken message containing an unsupported EncryptionAlgorithm. Override CreateSecurityTokenDescriptor if you need to support algorithms other than AES 256. Гугл, яндекс, дакдакго ничего не дал по этому поводу, куда копать уже не знаю. CryptoPro JCP и TLS установлен и без проблем подключается к самому сайту, а вот насколько я понимаю SOAP запрос подписать не может. Если переключаю на тестовый сайт dss.cryptopro.ru без гост шифрования(с обычными ssl) - все работает без проблем. Код имеет следующий вид: Код:public class MainClass {
public static void main(String[] args) {
Security.setProperty("ssl.SocketFactory.provider", "ru.CryptoPro.ssl.SSLSocketFactoryImpl");
System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.trustStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.trustStore", "E:\\truststore.store");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
DefaultSTSIssuedTokenConfiguration stsConfig = new DefaultSTSIssuedTokenConfiguration(
STSIssuedTokenConfiguration.PROTOCOL_13,
"https://dss.testserver.test/STS/Active.svc/username/transport",
"http://dss.testserver.test/STS/Active.svc/mex");
stsConfig.getOtherOptions().put(BindingProvider.USERNAME_PROPERTY,"testuser");
stsConfig.getOtherOptions().put(BindingProvider.PASSWORD_PROPERTY,"password");
try {
SignService srv = new SignService(new URL("http://dss.testserver.test/SignServer/SignService.svc?wsdl"));
Iterator<QName> ports = srv.getPorts();
ISignService client = null;
while (ports.hasNext()) {
QName portName = ports.next();
ISignService p = srv.getPort(portName, ISignService.class, new WebServiceFeature[] {
new STSIssuedTokenFeature(stsConfig)
});
String en = (String)((BindingProvider)p).getRequestContext().get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
if(en.equals("https://dss.testserver.test/SignServer/SignServiceR.svc/issuedtoken/transport/nosc")) {
client = p;
break;
}
}
if (client == null) {
System.out.println("Cannot find endpoint in service WSDL");
}
ArrayOfDSSCertificate certs = client.getCertificates(); // здесь собственно падает в ошибку
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ISignServiceGetCertificatesDssFaultFaultFaultMessage iSignServiceGetCertificatesDssFaultFaultFaultMessage) {
iSignServiceGetCertificatesDssFaultFaultFaultMessage.printStackTrace();
}
}
}
Полный стек ошибки: Цитата:Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: ID4184: The EncryptingCredentials provided in the SecurityTokenDescriptor must not be null if Scope.TokenEncryptionRequired is set to true. This can be caused by the Scope specifying an unsupported encryption key type, or by the incoming RequestSecurityToken message containing an unsupported EncryptionAlgorithm. Override CreateSecurityTokenDescriptor if you need to support algorithms other than AES 256. at com.sun.xml.ws.fault.SOAP12Fault.getProtocolException(SOAP12Fault.java:229) at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:126) at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:199) at com.sun.xml.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:218) at com.sun.xml.ws.security.trust.impl.TrustPluginImpl.invokeRST(TrustPluginImpl.java:628) at com.sun.xml.ws.security.trust.impl.TrustPluginImpl.process(TrustPluginImpl.java:174) at com.sun.xml.ws.security.trust.impl.client.STSIssuedTokenProviderImpl.getIssuedTokenContext(STSIssuedTokenProviderImpl.java:144) at com.sun.xml.ws.security.trust.impl.client.STSIssuedTokenProviderImpl.issue(STSIssuedTokenProviderImpl.java:74) at com.sun.xml.ws.api.security.trust.client.IssuedTokenManager.getIssuedToken(IssuedTokenManager.java:83) at com.sun.xml.wss.jaxws.impl.SecurityClientTube.invokeTrustPlugin(SecurityClientTube.java:685) at com.sun.xml.wss.jaxws.impl.SecurityClientTube.processClientRequestPacket(SecurityClientTube.java:281) at com.sun.xml.wss.jaxws.impl.SecurityClientTube.processRequest(SecurityClientTube.java:247) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482) at com.sun.xml.ws.client.Stub.process(Stub.java:323) at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:113) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93) at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144) at com.sun.proxy.$Proxy46.getCertificates(Unknown Source) at MainClass.main(MainClass.java:80)
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 140 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) Откуда: Крипто-Про Поблагодарили: 15 раз в 14 постах
|
На данный момент DSS предоставляет более простой для интеграции интерфейс REST. Рекомендуем использовать его.
Указанная ошибка приходит с Центра Идентификации DSS. Необходимо проверить его настройки: убедиться что для проверяющей стороны "Сервиса Подписи" задан сертификат шифрования. см. Рук-во разработчика командлеты *-DssRelyingPartyTrust
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.09.2017(UTC) Сообщений: 2
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.06.2016(UTC) Сообщений: 56 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 4 раз Поблагодарили: 3 раз в 3 постах
|
День добрый. Через интерфейс REST, необходимо для регистрации пользователя присвоить Client_ID. Пока не понимаю где получить Client_ID. В документации написано, что допустимое значение данного параметра сохраняется в ЦИ на этапе регистрации клиента. Хочу сначала понять логику. Например сделали регистрацию клиента через Web-интерфейс, Client ID сейчас возможно посмотреть в ЦИ (например в БД), как он выглядит?
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 140 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) Откуда: Крипто-Про Поблагодарили: 15 раз в 14 постах
|
Добрый день,
Client_ID задаёт администратор. См. рук-во администратора, командлеты *-DssClient
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.06.2016(UTC) Сообщений: 56 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 4 раз Поблагодарили: 3 раз в 3 постах
|
Есть ли возможность узнать Client_ID от вашего тестового DSS (dss.cryptopro.ru) и сделать запрос?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.06.2016(UTC) Сообщений: 56 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 4 раз Поблагодарили: 3 раз в 3 постах
|
Добрый день. Хочу получить маркер доступа через интерфейс REST. Выполняю запрос: POST https://dss01.nucrf.ru/STS/oauth/token HTTP/1.1 Host: dss01.nucrf.ru Accept: application/json Content-Type: application/x-www-form-urlencoded Authorization: Basic dXNlcjcwMDoxMjM0NQ== Cache-Control: no-cache Postman-Token: eea13afa-e267-7439-9b04-c57044d057f9 grant_type=password&client_id=test-oauth-client&scope=dss&username=user700&password=12345&resource=test Приходит ответ с ошибкой - {"error":"invalid_client"} Client_ID в DSS прописан правильный: ClientId : test-oauth-client ClientName : Description : Enabled : True Flows : {AuthorizationCode} ClientSecrets : {} RedirectUris : {urn:ietf:wg:oauth:2.0:oob:auto} Type : Public AccessTokenType : Jwt AuthorizationCodeLifetime : 300 AccessTokenLifetime : 300 IdentityTokenLifetime : 300 В журнале DSS (в STS'e) ошибка - Instance Unique Identifier: 1/STS] Source: ClientValidator Message: Client with id user700 is not registered.. На самом деле Пользователь зарегистрирован в DSS'e.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.06.2016(UTC) Сообщений: 56 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 4 раз Поблагодарили: 3 раз в 3 постах
|
AllowedFlow пробовал как и ResourceOwner и ClientCredentials - без успешно. Возможно ли у вас попросить пример Вашего Get-DSSClient (с dss.cryptopro.ru). И пример запроса обращающий по логину и паролю. Выполнял пример с документации - без успешно. Так же не очень понятно в Руководство администратора Вы пишите, что параметр ClientCredentials не доступен, а в Руководство разработчика есть описание и примеры запроса и ответа - "Авторизации с использование учётных данных пользователя" ![Anxious](/forum2/Images/Emoticons/eusa_shifty.gif) Отредактировано пользователем 27 сентября 2017 г. 14:23:16(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close