gpt4 book ai didi

.net - 安全 token 无法进行身份验证或授权(.net、soap1.2)

转载 作者:行者123 更新时间:2023-12-02 03:57:44 25 4
gpt4 key购买 nike

过去两周我一直在尝试访问第三方网络服务,但现在我感到非常困惑。

因此,Web 服务已在内联网中设置。我有访问它的 URL、用户和密码。他们还向我发送了我用来生成代理类的 .wsdl,但每当我尝试调用函数/方法时,我都会收到错误“安全 token 无法进行身份验证或授权。”。

当然,我不太擅长网络服务等,但我很确定大多数设置都是由代理类完成的。我在那里设置了 Web 服务的 URL,并通过凭据和自定义绑定(bind)解析帐户信息,但有些问题......3rd-party 开发人员只告诉我身份验证模式是 NTML Kerberos,这对我来说并没有什么帮助。我尝试将安全中的authenticationMode设置为Kerberos,但最终又出现另一个错误(找不到主体)。

代理调用:

 var binding = new CustomBinding("CrmDienstWSBinding"); //in web.config
var proxy = new CrmDienstWSClient(binding, new EndpointAddress("xxxx"));
proxy.ClientCredentials.UserName.UserName = user;
proxy.ClientCredentials.UserName.Password = pw;

var erg = proxy.erstelleAufgabe("false", erstAufg);

代理构造函数:

    public CrmDienstWSClient() {
}

public CrmDienstWSClient(string endpointConfigurationName) :
base(endpointConfigurationName) {
}

public CrmDienstWSClient(string endpointConfigurationName, string remoteAddress) :
base(endpointConfigurationName, remoteAddress) {
}

public CrmDienstWSClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
base(endpointConfigurationName, remoteAddress) {
}

public CrmDienstWSClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
base(binding, remoteAddress) {
}

网络配置:

<system.serviceModel>
<bindings>
<customBinding>
<binding name="CrmDienstWSBinding">
<textMessageEncoding messageVersion="Soap12" />
<httpTransport />
</binding>
</customBinding>
</bindings>
</system.serviceModel>

我知道这几行内容并不是很多,但我不能真正发布那么多,因为网络服务来自第三方。我会尝试获取解决此问题所需的任何信息..所以请帮助我〜.〜

提前致谢。

[编辑 17.07.15] 所以我终于得到了一些更多信息..

<soap:Header>
<wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-22" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>testmann@15885</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">geheim</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>

现在我知道 header 应该是什么样子,但通常这些东西应该用 .wsdl 创建,这样我只需要设置我的用户名和密码,对吧?我是否必须更改 wsdl 生成的代码?

还有另一种方法可以通过使用soapUI来获取Access。以前从未使用过它,但我现在会看一下。

在 .wsdl 中, header 不完整..示例:

<operation name="erstelleAufgabe">
<soap12:operation soapAction="" />
<input>
<soap12:body use="literal" parts="erstelleAufgabe" />
<soap12:header message="tns:CrmDienstWS_erstelleAufgabe" part="IgnoreWarnings" use="literal" />
</input>
<output>
<soap12:body use="literal" />
</output>
<fault name="ServiceFault">
<soap12:fault use="literal" name="ServiceFault" namespace="" />
</fault>
</operation>

命名空间:xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/wsdl11soap12-20060302.xsd"

xsd 的标题下甚至没有此类 XML 元素。现在我真的很困惑。我认为服务提供商搞砸了。

最佳答案

最后我们亲爱的服务提供商忘记了激活密码......

关于.net - 安全 token 无法进行身份验证或授权(.net、soap1.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31404374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com