首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过具有基本身份验证的外部对象的GeneXus 16 .NET Web使用SOAP服务

通过具有基本身份验证的外部对象的GeneXus 16 .NET Web使用SOAP服务
EN

Stack Overflow用户
提问于 2020-05-21 00:36:23
回答 1查看 419关注 0票数 0

我有消费者(GX16、U5、.NET)和提供者(GX15、U6、Java),它们通过SOAP通信。提供者期望具有基本身份验证的"Authorization“HTTP头,但是我的使用者显然没有包括头部(从TCPTrace中可以看到),即使我已经将身份验证设置为Yes,Auth Method设置为Basic,并提供了证书。

我使用从WSDL检查器创建的外部对象来使用服务,并相应地设置了位置变量。

在IIS端(甚至在.NET中)我需要做什么特殊的事情才能包含报头?

我有来自第三个KB的第二个消费者(GX16、U5、Java),它很好地使用了这个完全相同的提供者--其中包含了HTTP头。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2020-05-28 23:35:48

.NET在第一次尝试中不包含授权标头的原因是因为它不是抢占式的。

在某些情况下,相反的行为被认为不太安全,即在第一个请求时发送凭据。(这称为抢占身份验证)

如果提供程序在第一次尝试后返回401错误代码,.NET将执行第二次尝试,其中将包含带有凭据的Authorization头。如果提供程序返回不同的代码,则不会进行第二次尝试。我们相信这是你的案子。

总结:当服务被调用时,执行以下操作:-请求将在不发送凭据的情况下发出。-服务器使用类型为: Authorization: Basic dXNlcjpwYXNz的头部响应错误401。-执行第二个请求,现在使用凭据。授权报头与授权:基本dXNlcjpwYXNz一起使用-服务器对用户进行身份验证并使用Http代码200进行响应。

解决方法:为了发送授权标头,您可能需要使用httpclient,方法是为每个重要的服务包含一个特定的过程,并替换您的ExternalObject。

下面你会找到这个例子:

事件'TestHTTP‘

&HTTPClient.Host =“本地主机”

&HTTPClient.Port = 8089

&HTTPClient.BaseURL = "/version8JavaEnvironment/servlet/“

&HTTPClient.AddHeader(“内容类型”,“文本/xml;字符集=utf-8”)

&HTTPClient.AddHeader("SOAPAction","version8action/ASERVICEPROVIDER.Execute")

&HTTPClient.AddHeader(“授权”,"ppppppppppppppppppppppppp")

&XMLWriter.OpenRequest(HTTPClient)(&H)

&XMLWriter.WriteStartDocument("utf-8",0)

&XMLWriter.WriteStartElement("SOAP-ENVEnvelope")

&XMLWriter.WriteAttribute("xmlnsSOAP-ENV",http//schemas.xmlsoap.org/soap/envelope/")

&XMLWriter.WriteAttribute("xmlnsxsd",“www.w3.org/2001/XMLSchema”)

&XMLWriter.WriteAttribute("xmlnsSOAP-ENC",http//schemas.xmlsoap.org/soap/encoding/")

&XMLWriter.WriteAttribute("xmlnsxsi","http//www.w3.org/2001/XMLSchema-instance")

&XMLWriter.WriteStartElement("SOAP-ENVBody")

&XMLWriter.WriteElement("ServiceProvider.Execute","")

&XMLWriter.WriteAttribute("xmlns","version8")

&XMLWriter.WriteEndElement()

&XMLWriter.Close()

&HTTPClient.Execute("POST","targetResourceName")

&longvarchar = &HTTPClient.ToString()

事件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61918279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档