我有一个托管在IIS上的远程WCF服务。然后,我在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/

10-15 08:33