我们有一个SSO认证服务,其他外部面向的网页和服务使用该服务来验证用户。当用户试图访问服务时,如果没有找到包含身份验证令牌的cookie,则会被重定向到SingleSignOn认证服务。认证服务完成其工作后,将用户(HTTP 302)重定向到原始URL,并在URL中加密其身份验证令牌。很好。
我如何从WCF POX服务调用它?这里没有SOAP,只有带有XML响应的HTTP GET/POST。
目前我的做法是,在每个服务方法实现方法中检查头文件的cookie。如果cookie存在,则验证auth token并处理请求。如果cookie不存在或auth token已过期,则响应为:
WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect;
WebOperationContext.Current.OutgoingResponse.Location = string.Format( authServiceURL, returnURL );
这样做是可行的,但它并没有与任何WCF功能集成,并且需要我手动编写大量的场景代码。有没有一种方法可以使用这些类来实现这个功能:
<serviceCredentials>
<issuedTokenAuthentication>
</issuedTokenAuthentication>
或者使用其他方式检查每个对服务的请求? 我一直在阅读像如何:创建自定义令牌这样的页面,但我不知道它如何适用于我的需求。 任何建议都将不胜感激。我正在研究这个问题,因为在我的项目开始之前我有一些时间,并且我想正确实现这个项目并尽可能多地了解WCF。