gpt4 book ai didi

asp.net - 将 Windows 凭据传递给远程 WCF 服务

转载 作者:行者123 更新时间:2023-12-02 04:46:51 25 4
gpt4 key购买 nike

我有一个远程 WCF 服务,托管在 IIS 上。然后我在 Azure 网站上托管了一个 ASP.NET MVC 网站。

该网站使用 Azure Active Directory 对用户进行身份验证,并且工作正常。但是,WCF 服务需要正确的 Windows(基于域)凭据才能返回结果。

当我在 ASP.NET MVC 应用程序中实例化该服务时,我使用:

SomeService.ServiceClient client = new ServiceClient ("SOAP");
client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

这是由 Web.config 文件支持的:

<basicHttpBinding>
<binding name="SOAP" allowCookies="true" maxReceivedMessageSize="20000000"
maxBufferSize="20000000"
maxBufferPoolSize="20000000">
<readerQuotas maxDepth="32"
maxArrayLength="200000000"
maxStringContentLength="200000000"/>

<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>

当我在本地运行此程序时,它工作正常 - 我从本地 AppPool 获取凭据,这些凭据对于访问 WCF 服务是有效的。但是,一旦我将网站部署到 Azure,上述情况就会中断,因为显然该服务不知道我本地拥有的凭据。

问题:

有没有办法让我通过浏览器将 Windows 凭据传递到 WCF 服务,而不破坏 AAD 身份验证堆栈,因为我只需要这些凭据用于 WCF 连接而无需其他任何东西?我完全可以显示系统提示输入凭据。

最佳答案

您应该能够像这样设置 Windows 凭据...

 SomeService.ServiceClient client = new ServiceClient ("SOAP");
client.ClientCredentials.Windows.ClientCredential = new NetworkCredential("Username", "Password", "Domain");

希望这有帮助!

关于asp.net - 将 Windows 凭据传递给远程 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144146/

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