使用表单身份验证调用WCF服务时避免重定向

加布里埃尔·罗伊(Gabriel G.Roy)

我试图通过调用Web服务上的一些方法来对Web服务进行单元测试,但是我一直在点击登录页面重定向,而不是获得实际结果。

我首先调用返回了cookie的安全服务,然后可以重用该cookie调用我的其他Web服务。我认为这是避免重定向的方法。

string sharedCookie;

var securityWebService = new SecurityWebServiceClient(CreateCustomBinding(), new EndpointAddress("http://localhost/SecurityWebService.svc"));
using (new OperationContextScope(securityWebService.InnerChannel))
{
    securityWebService.Login("UserName", "Password");

    var response = (HttpResponseMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpResponseMessageProperty.Name];
    sharedCookie = response.Headers["Set-Cookie"];
}

var webService = new WebServiceClient(CreateCustomBinding(), new EndpointAddress("http://localhost/WebServiceWithFormsAuthentication.svc"));

using (new OperationContextScope(webService.InnerChannel))
{
    var request = new HttpRequestMessageProperty();
    request.Headers["Cookie"] = sharedCookie;
    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = request;

    var data = webService.GetSomething();
}

错误如下:

There was no endpoint listening at http://localhost/WebServiceWithFormsAuthentication.svc that could accept the message.

内部异常是404找不到与ResponseUri登录重定向URL相对应的内容。如果我禁用了表单身份验证,则呼叫将正确进行。

我的问题是:

  1. 如何验证我的Cookie是否正确收到?
  2. 如何检查为什么拒绝该请求以及将我重定向到登录页面?
  3. 我还有其他线索可以解决这个问题吗?

编辑:出于最奇怪的原因,如果我在两次调用Web服务之前立即在IIS中回收我的应用程序池,它们将正确通过而不被重定向。

编辑2:似乎在我回收了应用程序池后它可以工作,因为尚未创建会话ID cookie。在响应中,它显示在我的身份验证Cookie后面。在任何后续调用中,会话ID cookie首先出现,并且看起来我的第二个Web服务不希望看到该会话ID cookie首先出现...?

编辑3:我的身份验证服务已启用会话,而我的普通Web服务则没有。当会话cookie首先出现在标题中时,似乎第二个不喜欢它。也许不希望首先看到另一个Cookie?

加布里埃尔·罗伊(Gabriel G.Roy)

这是我所做的使它工作的方法。我必须这样做似乎很奇怪,所以如果有人有更好的解决方案,我想听听。

安全Web服务在响应标头中返回两个cookie。一个是会话cookie,另一个是身份验证cookie。我所做的是解析Cookie容器中的标头,以仅提取身份验证Cookie,以仅将身份验证Cookie发送给另一个Web服务。

string sharedCookie;

var securityWebService = new SecurityWebServiceClient(CreateCustomBinding(), new EndpointAddress("http://localhost/SecurityWebService.svc"));
using (new OperationContextScope(securityWebService.InnerChannel))
{
    securityWebService.Login("UserName", "Password");

    var response = (HttpResponseMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpResponseMessageProperty.Name];
    var cookieHeader = response.Headers["Set-Cookie"];
    var container = new CookieContainer();
    container.SetCookies(new Uri("http://localhost"), cookiesString);
    var cookies = container.GetCookies(new Uri("http://localhost"));

    var authCookie = cookies["nameOfAuthCookie"];
    if (authCookie != null)
         sharedCookie = authCookie.ToString();
}

这工作得很好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用表单身份验证调用WCF服务时避免重定向

来自分类Dev

禁用WCF调用的表单身份验证

来自分类Dev

禁用WCF调用的表单身份验证

来自分类Dev

如何使用表单身份验证将用户重定向到特定页面

来自分类Dev

使用链接按钮通过表单身份验证重定向到resetpassword页面

来自分类Dev

身份验证后,表单身份验证重定向回Login.aspx

来自分类Dev

ASP.NET表单身份验证-重定向过多

来自分类Dev

WebForms表单身份验证:成功登录并重定向后,Request.IsAuthenticated = false

来自分类Dev

表单身份验证重定向后,ASP.net页不断加载

来自分类Dev

ASP.NET表单身份验证-不重定向到任何页面

来自分类Dev

使用表单身份验证时如何在服务器端获取当前用户域?

来自分类Dev

奇怪的.net MVC表单身份验证,当客户端请求css / js文件时,它将重定向到登录

来自分类Dev

使用 Xamarin.Auth 进行身份验证时未调用重定向 URL

来自分类Dev

表单身份验证:“无法联系服务器”

来自分类Dev

此页面无法正确重定向MVC3 + AJAX +表单身份验证错误

来自分类Dev

ASP.NET表单身份验证跨应用程序重定向不起作用

来自分类Dev

asp.net表单身份验证有时会重定向到default.aspx

来自分类Dev

如何将我的注册页面从表单身份验证重定向到登录页面中排除

来自分类Dev

使用表单身份验证时是否可以捕获用户凭据

来自分类Dev

Owin使用外部表单身份验证Cookie

来自分类Dev

WCF OData服务的基本身份验证-关闭登录重定向

来自分类Dev

表单身份验证超时被忽略

来自分类Dev

JSF表单身份验证+ OAuth

来自分类Dev

表单身份验证未通过身份验证无法正常使用外部链接

来自分类Dev

Ember简单身份验证:身份验证后如何重定向回最后访问的路由?

来自分类Dev

如何硬编码简单身份验证(无后端)并重定向到主页-React

来自分类Dev

expressjs 简单身份验证 - 本地主机重定向你太多次

来自分类Dev

IE 7、8和11而不是9或10的ASP.NET表单身份验证登录页面重定向循环

来自分类Dev

在IIS上对WCF服务进行身份验证时,仅首次调用AuthenticateRequest

Related 相关文章

  1. 1

    使用表单身份验证调用WCF服务时避免重定向

  2. 2

    禁用WCF调用的表单身份验证

  3. 3

    禁用WCF调用的表单身份验证

  4. 4

    如何使用表单身份验证将用户重定向到特定页面

  5. 5

    使用链接按钮通过表单身份验证重定向到resetpassword页面

  6. 6

    身份验证后,表单身份验证重定向回Login.aspx

  7. 7

    ASP.NET表单身份验证-重定向过多

  8. 8

    WebForms表单身份验证:成功登录并重定向后,Request.IsAuthenticated = false

  9. 9

    表单身份验证重定向后,ASP.net页不断加载

  10. 10

    ASP.NET表单身份验证-不重定向到任何页面

  11. 11

    使用表单身份验证时如何在服务器端获取当前用户域?

  12. 12

    奇怪的.net MVC表单身份验证,当客户端请求css / js文件时,它将重定向到登录

  13. 13

    使用 Xamarin.Auth 进行身份验证时未调用重定向 URL

  14. 14

    表单身份验证:“无法联系服务器”

  15. 15

    此页面无法正确重定向MVC3 + AJAX +表单身份验证错误

  16. 16

    ASP.NET表单身份验证跨应用程序重定向不起作用

  17. 17

    asp.net表单身份验证有时会重定向到default.aspx

  18. 18

    如何将我的注册页面从表单身份验证重定向到登录页面中排除

  19. 19

    使用表单身份验证时是否可以捕获用户凭据

  20. 20

    Owin使用外部表单身份验证Cookie

  21. 21

    WCF OData服务的基本身份验证-关闭登录重定向

  22. 22

    表单身份验证超时被忽略

  23. 23

    JSF表单身份验证+ OAuth

  24. 24

    表单身份验证未通过身份验证无法正常使用外部链接

  25. 25

    Ember简单身份验证:身份验证后如何重定向回最后访问的路由?

  26. 26

    如何硬编码简单身份验证(无后端)并重定向到主页-React

  27. 27

    expressjs 简单身份验证 - 本地主机重定向你太多次

  28. 28

    IE 7、8和11而不是9或10的ASP.NET表单身份验证登录页面重定向循环

  29. 29

    在IIS上对WCF服务进行身份验证时,仅首次调用AuthenticateRequest

热门标签

归档