Xml WCF-SSO身份验证令牌和POX接口
这就是我要做的 我们有一个SSO身份验证服务,其他面向外部的网页和服务使用该服务对用户进行身份验证。用户尝试访问服务,如果未找到包含身份验证令牌的cookie,则会将其重定向到SingleSignOn身份验证服务。身份验证服务完成了它的工作,并将用户(HTTP 302)重定向到原始URL,并在URL中使用其加密的身份验证令牌。太好了 我如何从WCF POX服务调用它?这里没有SOAP,只有HTTP GET/POST和XML响应 我目前正在做的是,在每个服务方法实现方法中,检查cookie的头。如果cookie存在,请验证身份验证令牌并处理请求。如果cookie不存在或身份验证令牌已过期,则响应:Xml WCF-SSO身份验证令牌和POX接口,xml,wcf,rest,authentication,single-sign-on,Xml,Wcf,Rest,Authentication,Single Sign On,这就是我要做的 我们有一个SSO身份验证服务,其他面向外部的网页和服务使用该服务对用户进行身份验证。用户尝试访问服务,如果未找到包含身份验证令牌的cookie,则会将其重定向到SingleSignOn身份验证服务。身份验证服务完成了它的工作,并将用户(HTTP 302)重定向到原始URL,并在URL中使用其加密的身份验证令牌。太好了 我如何从WCF POX服务调用它?这里没有SOAP,只有HTTP GET/POST和XML响应 我目前正在做的是,在每个服务方法实现方法中,检查cookie的头。如
WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect;
WebOperationContext.Current.OutgoingResponse.Location = string.Format( authServiceURL, returnURL );
这是可行的,但没有与任何WCF功能集成,需要我手动编写一整套场景的代码。有没有一种方法可以使用这些类来实现这一点:
<serviceCredentials>
<issuedTokenAuthentication>
</issuedTokenAuthentication>
或者使用其他方法检查服务的每个请求
我一直在读:,但我不知道它如何适用于我的需要
如有任何建议,将不胜感激。我之所以研究这个问题,是因为在我的项目开始之前,我还有一些时间,我想正确地实施这个项目,并尽可能多地了解WCF。我不想回答我自己的问题,但我将公布我为此做了些什么 我们有一个可以重定向(Http 301)客户端的身份验证服务,在url中添加身份验证令牌后,该服务会将客户端重定向回我们的服务。利用这一点,以下是我的服务所采取的步骤 我添加了System.ServiceModel.ServiceAuthorizationManager实现,并重写了CheckAccessCore方法来检查cookie/头或url中的身份验证令牌。如果找到,我会验证令牌是否有效。该方法只返回true或false,指示请求是否通过了身份验证。如果消息通过,我创建了一个IExtension对象来包含一些数据,并将其添加到OperationContext扩展中 我还添加了IDispathMessageInspector的实现。这有AfterReceiveRequest和BeforeSendReply方法。我使用BeforeSendReply方法劫持响应。如果消息未通过身份验证(OperationContext扩展中没有我的IExtension对象),我将WebOperationContext.Current.OutgoingResponse.StatusCode设置为重定向,并将位置设置为身份验证服务的url 如果它确实通过了身份验证,我确保auth令牌位于BeforeSendReply方法的响应消息cookie/头中
帮我弄清楚如何把事情联系起来。这是最好的方式吗?不知道。但这适用于我的WCF/REST服务。它阻止所有未经身份验证的消息,甚至阻止它们进入我的ServiceContract实现,将所有请求重定向到身份验证服务。是否有人将SSO与WCF一起使用?如果是,您是如何实施的?