使用Windows身份验证在WebAPI控制器中获取NetworkCredentils或ClientCredentials

时间:2017-07-11 10:46:16

标签: c# .net asp.net-web-api dynamics-crm windows-authentication

我有一个带有Windows身份验证的WebAPI应用程序。我需要在WebAPI控制器内部创建与外部应用程序(MS Dynamics CRM 2016)的连接,但我无法获取连接到WebAPI用户的密码。

是否有可能在WebAPI控制器中获取NetworkCredentialsClientCredentials对象?我可以获得已连接用户的用户名和域名,但不能获得密码。 CredentialCache.DefaultNetworkCredentials对象为空。

public class ParametersController : ApiController
{
    public IHttpActionResult GetParameters()
    {
        NetworkCredential defaultNetworkCredentials = CredentialCache.DefaultNetworkCredentials; //null

        return this.Ok();
    }
}

1 个答案:

答案 0 :(得分:3)

您无法从Windows身份验证中获取密码,原因与您无法使用Windows身份验证建立公共网站的原因相同,您可以在不知情的情况下获取访问者帐户的所有密码。这是一项安全功能。