Статус: Участник
  Группы: Участники
 Зарегистрирован: 26.06.2009(UTC) Сообщений: 12 Откуда: Moscow
  
	 
	
     | 
    
        
            
		      
                Добрый день! При подписывании XML возникает ошибка "Неверно сформированный элемент ссылки.". В подписываемом элементе Id указан следующим образом: Код:<soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="test"> 
 В программе ссылка указывается следующим образом:  При вызове метода ComputeSignature появляется указанная выше ошибка. Подскажите, плз, в чем не прав?  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 24.12.2007(UTC) Сообщений: 390  Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
  
	 
	
     | 
    
        
            
		      
                Проблема в namespace атрибута Id, который отличается от namespace узла soapenv. Есть несколько решений 1. Удалить у атрибута Id namespace 2. Добавить к узлу soapenv:Body другой атрибут, на который ссылаться при подписи. 3. Ссылаться при подписи на весь документ, а узел выбирать соответствующими transform    | 
С уважением, Александр.  | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 26.06.2009(UTC) Сообщений: 12 Откуда: Moscow
  
	 
	
     | 
    
        
            
		      
                Т.е., как я понимаю, решить эту проблему только на стороне получателя нельзя? 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 24.12.2007(UTC) Сообщений: 390  Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
  
	 
	
     | 
    
        
            
		      
                Оказывается есть другой более простой метод - перекрыть метод GetIdElement у SignedXml и при подписи и проверке пользоваться этим классом. Код:
    class MySignedXml : SignedXml
    {
        public MySignedXml(XmlDocument document)
            :base(document)
        {
        }
        public override XmlElement GetIdElement(XmlDocument document, string idValue)
        {
            XmlNameTable myXmlNameTable = new NameTable();
            XmlNamespaceManager myNamespacemanager = new XmlNamespaceManager(myXmlNameTable);
            myNamespacemanager.AddNamespace( "wsu", 
                    "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" );
            XmlNodeList lst = document.SelectNodes("//*[@wsu:Id='" + idValue + "' or @wsu:ID='" + idValue + 
                    "' or @wsu:ID='" + idValue + "']", myNamespacemanager);
            if (lst.Count != 1)
                return null;
            return (XmlElement)lst.Item(0);
        }
    }
 
    | 
С уважением, Александр.  | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 26.06.2009(UTC) Сообщений: 12 Откуда: Moscow
  
	 
	
     | 
    
        
            
		      
                Спасибо, все получилось! :) 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close