WCF,ASP.NET成员资格提供者和认证服务
|
我写了一个与WCF服务(BasicHttpBinding)通信的Silverlight 2应用程序.托管Silverlight内容的站点使用ASP.NET成员资格提供程序进行保护.我可以使用我的WCF服务中的HttpContext.Current.User.Identity.Name访问当前用户,并且我已经打开了AspNetCompatibilityRequirementsMode. 我现在想使用完全相同的Web服务编写一个Windows应用程序.为了处理身份验证,我启用了Authentication service,并可以调用“登录”验证我的用户… Okey,所有好…但是如何让我得到我的其他服务客户端上设置的身份验证cookie? 两个服务都托管在同一个域上 > MyDataService.svc< - 处理我的数据的那个 客户端应用程序服务是另一种选择,但所有示例仅限于显示如何获取用户,角色和他的个人资料…但是,一旦我们使用客户端应用程序服务进行身份验证,应该有一种方式来获取该身份验证cookie连接到我的服务客户端,当回拨到同一台服务器时. 根据同事的意见,解决方案是添加了一个wsHttpBinding终点,但我希望能够解决这个问题 解决方法我终于找到了一种方法来做这项工作.对于认证,我使用“ WCF Authentication Service”.当验证服务将尝试设置一个认证cookie.我需要将此cookie从响应中删除,并将其添加到对同一台机器上的其他Web服务的任何其他请求.要执行的代码如下所示:var authService = new AuthService.AuthenticationServiceClient();
var diveService = new DiveLogService.DiveLogServiceClient();
string cookieHeader = "";
using (OperationContextScope scope = new OperationContextScope(authService.InnerChannel))
{
HttpRequestMessageProperty requestProperty = new HttpRequestMessageProperty();
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestProperty;
bool isGood = authService.Login("jonas","jonas",string.Empty,true);
MessageProperties properties = OperationContext.Current.IncomingMessageProperties;
HttpResponseMessageProperty responseProperty = (HttpResponseMessageProperty)properties[HttpResponseMessageProperty.Name];
cookieHeader = responseProperty.Headers[HttpResponseHeader.SetCookie];
}
using (OperationContextScope scope = new OperationContextScope(diveService.InnerChannel))
{
HttpRequestMessageProperty httpRequest = new HttpRequestMessageProperty();
OperationContext.Current.OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name,httpRequest);
httpRequest.Headers.Add(HttpRequestHeader.Cookie,cookieHeader);
var res = diveService.GetDives();
}
如您所见,我有两个服务客户端,一个用于验证服务,另一个用于我实际使用的服务.第一个块将调用Login方法,并从响应中获取认证cookie.第二个块将在调用“GetDives”服务方法之前将该头添加到请求中. 我对此代码完全不满意,我认为更好的选择是使用“Web Reference”代替“Service Reference”,并使用.NET 2.0堆栈. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-4 – IE中的MVC VS2012 jquery.validate.js错误
- asp.net – SQL Reporting Services – 打印按钮未显示在Mo
- asp.net – 如何防止Entity Framework将FileStream列加载到
- asp.net-mvc-3 – 将值传递给控制器时,ASP.NET MVC datetim
- asp.net-mvc – .NET MVC是否有强类型的RedirectToAction?
- asp.net-mvc-3 – 在MVC 3的AuthorizeAttribute中获取模型数
- 如何将ASP.NET MVC5身份认证添加到现有数据库
- 在ASP.NET mvc 4中使用Ninject时是否需要控制器工厂
- asp.net – 有没有办法知道是否有人为您的网站添加了书签?
- asp.net – 如何禁用Web.Config中的目录浏览
- asp.net-mvc-3 – 将输入值传递给Action(ASP.Net
- rest – asp.net Web Api – 默认错误消息
- asp.net – 无法在UpdatePanel中下载文件
- asp.net-mvc – Asp.Net MVC和HTML5 PUSH通知
- asp.net-mvc-4 – Require.js优化vs asp.net mvc
- asp.net-mvc-3 – 使用Jquery Ajax渲染部分视图与
- asp.net – 多重约束违反.关系“…”的角色“…”
- asp.net – 微软azure smtp电子邮件中继设置
- asp.net – T-SQL中的HTML编码?
- ASP.net控件在实现资源时在代码背后找不到
