在.NET中使用REST服务时处理身份验证重定向

时间:2015-11-19 15:41:29

标签: .net rest authentication forms-authentication

在桌面应用程序中,我使用的是REST服务。

该服务实现自定义身份验证。在浏览器中调用URI(GET请求)时,验证页面将显示在浏览器中,您必须输入凭据。验证成功后,您将转发回初始地址。浏览器再次发送GET请求,您将收到服务响应(JSON文档)。

我的目标是每次调用服务并且未提供用户凭据(成功验证后都是coockie),登录掩码将显示在桌面应用程序内的Web控件中,而不是显示在新的浏览器窗口中。

我的实现很原始:

var proxy = new WebClient();
var str = proxy.DownloadString("https://mycompany.net/myservice/Entity/123");

我的问题是,如果未提供用户凭据,请求不会抛出异常,也不会触发事件。但在响应字符串中,我看到了身份验证页面的HTML内容。所以重定向在内部发生,我不知道返回的字符串是JSON对象还是某些HTML页面。

您能告诉我是否使用正确的类来完成此任务,如何挂钩请求以了解要提供的身份验证?

1 个答案:

答案 0 :(得分:1)

您正在使用的是Web服务的Web应用程序身份验证机制(将浏览器重定向到登录页面),这将导致您遇到的问题。如果您尝试从移动客户端或JavaScript(AJAX调用)使用此服务,则会遇到类似的问题。

您不会说明您是否控制REST服务,但如果您这样做,则应更改身份验证机制以期望持有者令牌,并在缺少标头时返回401 Unauthorized响应。

客户端(在您的情况下为桌面应用程序)应该对用户进行身份验证,并在REST服务调用的Authorization标头中获取要发送的JWT令牌。