The algorithm ‘http://www.w3.org/2000/09/xmldsig#rsa-sha1’ is not accepted for operation ‘AsymmetricSignature’ by algorithm suite Basic128Sha256Rsa15

Basic256Rsa15 

Merhaba,

Yakın zamanda karşıma çıkan;

System.ServiceModel.Security.MessageSecurityException: ‘http://www.w3.org/2001/04/xmldsig-more#rsa-sha256‘ algoritması, ‘AsymmetricSignature’işlemi için Basic256 algoritma paketi tarafından kabul edilmedi. Ya da The algorithm ‘http://www.w3.org/2000/09/xmldsig#rsa-sha1‘ is not accepted for operation ‘AsymmetricSignature’ by algorithm suite Basic128Sha256Rsa15 hatası ile ilgili deneyimlerimi sizlerle paylaşacağım. Siz de bu tarzda hata ile karşılaşıyorsanız. Sizlere de yardımcı olabilir;

Hata detayı: Server stack trace:

   konum: System.ServiceModel.Security.SecurityAlgorithmSuite.EnsureAcceptableAsymmetricSignatureAlgorithm(String algorithm)

   konum: System.ServiceModel.Security.SecurityAlgorithmSuite.EnsureAcceptableSignatureAlgorithm(SecurityKey verificationKey, String algorithm)

   konum: System.ServiceModel.Security.WSSecurityOneDotZeroReceiveSecurityHeader.VerifySignature(SignedXml signedXml, Boolean isPrimarySignature, SecurityHeaderTokenResolver resolver, Object signatureTarget, String id)   konum: System.ServiceModel.Security.ReceiveSecurityHeader.ProcessPrimarySignature(SignedXml signedXml, Boolean isFromDecryptedSource)   konum: System.ServiceModel.Security.ReceiveSecurityHeader.ExecuteFullPass(XmlDictionaryReader reader)   konum: System.ServiceModel.Security.StrictModeSecurityHeaderElementInferenceEngine.ExecuteProcessingPasses(ReceiveSecurityHeader securityHeader, XmlDictionaryReader reader)   konum: System.ServiceModel.Security.ReceiveSecurityHeader.Process(TimeSpan timeout, ChannelBinding channelBinding, ExtendedProtectionPolicy extendedProtectionPolicy)   konum: System.ServiceModel.Security.MessageSecurityProtocol.ProcessSecurityHeader(ReceiveSecurityHeader securityHeader, Message& message, SecurityToken requiredSigningToken, TimeSpan timeout, SecurityProtocolCorrelationState[] correlationStates)   konum: System.ServiceModel.Security.AsymmetricSecurityProtocol.VerifyIncomingMessageCore(Message& message, String actor, TimeSpan timeout, SecurityProtocolCorrelationState[] correlationStates)   konum: System.ServiceModel.Security.MessageSecurityProtocol.VerifyIncomingMessage(Message& message, TimeSpan timeout, SecurityProtocolCorrelationState[] correlationStates)   konum: System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)   konum: System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)   konum: System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)   konum: System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)   konum: System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)   konum: System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)Exception rethrown at [0]:   konum: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)   konum: System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type))

.Net/wcf servis kullanan client ya da host IBM websphere kullanan Rational Application Developer(rad) ya da host arasında uyumsuzluk olduğunu gösterebilir(ya da farklı iki sunucu client arasında).Algoritma detayları için : http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.html#_Toc161826547

Sha-1 ‘i sha256 ya  çevirmek gibi bir sorun olma ihtimali yüksektir.

(“http://www.w3.org/2000/09/xmldsig#sha1“) –> (“http://www.w3.org/2001/04/xmlenc#sha256“)

İki taraftaki Basic256Rsa15  algoritmayı kullandığında  Basic256Sha256Rsa15’yı wcf tarafı kabul etmemeye başlıyor

Exception detaylarına bakıldığında

The algorithm ‘http://www.w3.org/2000/09/xmldsig#rsa-sha1‘ is not accepted for operation ‘AsymmetricSignature’ by algorithm suite Basic128Sha256Rsa15.

Bu noktada giden gelen mesajı açıp incelediğimizde ,

(“http://www.w3.org/2000/09/xmldsig#sha1“)  SHA-256 “http://www.w3.org/2001/04/xmlenc#sha256“)   hash/digest algoritmasını beklerken,

SHA1withRSA/RSAwithSHA1 (“http://www.w3.org/2000/09/xmldsig#rsa-sha1“) imza algoritması,.NET/WCF servis kimliklendirme için SHA256withRSA/RSAwithSHA256 (“http://www.w3.org/2001/04/xmldsig-more#rsa-sha256“)  bunu kabul ediyor.Burda yapmanız gereken uyumluluk gösteren algoritma modellerine göre çalışma yapmanız olacaktır.Benim çözüm yöntemim  AsymmetricSecurityBindingElement  üzerinden birkaç  SecurityAlgorithmSuite sınıfından birkaç algoritma denememle sonuca ulaştım.Burdan security policy ve Algorithm Suite Property ‘lere resmi kanaldan göz atabilirsiniz:

Kaynak <http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.html#_Toc161826547>

http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.html#_Toc161826547

İşime en çok yarayan kaynak : https://www.fokkog.com/2011/01/ws-security-interoperability-issue.html

Böylelikle hatayı gidermiş olacaksınız.

Soru ve iletişim için  iletişim  formundan  bana ulaşabilirsiniz.

İlerleyen yazılarda görüşmek üzere.

Oğuz ALTUNTAŞ © 2020

error: Oğuz ALTUNTAŞ © 2020