gpt4 book ai didi

xml - WCF - SSO 身份验证 token 和 POX 接口(interface)

转载 作者:行者123 更新时间:2023-12-04 17:07:09 29 4
gpt4 key购买 nike

这就是我想要做的。

我们有一个 SSO 身份验证服务,其他面向外部的网页和服务使用它来对用户进行身份验证。用户尝试访问服务,如果没有找到包含身份验证 token 的 cookie,他们将被重定向到 SingleSignOn 身份验证服务。身份验证服务正常工作,并将用户 (HTTP 302) 重定向到原始 URL,并在 URL 中使用其加密的身份验证 token 。太好了。

如何从 WCF POX 服务调用它?这里没有 SOAP,只有带有 XML 响应的 HTTP GET/POST。

我目前正在做的是,在每个服务方法实现方法中,检查 cookie 的 header 。如果 cookie 存在,则验证身份验证 token 并处理请求。如果 cookie 不存在或授权 token 已过期,则响应:

  WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect;
WebOperationContext.Current.OutgoingResponse.Location = string.Format( authServiceURL, returnURL );

这行得通,但没有与任何 WCF 功能集成,并且需要我为一大堆场景手动编码。有没有一种方法可以使用这些类来实现:

                <serviceCredentials>
<issuedTokenAuthentication>
</issuedTokenAuthentication>

或使用其他方式检查对服务的每个请求?

我一直在阅读如下页面:How to: Create a Custom Token ,但我看不出它如何满足我的需求。

如有任何建议,我们将不胜感激。我正在研究这个,因为在我的项目开始之前我还有一些时间,我想正确地实现这个项目并尽可能多地了解 WCF。

最佳答案

我不想回答我自己的问题,但我会发布我最终为此所做的事情。

我们有一个身份验证服务,我们可以将 (Http 301) 客户端重定向到,在 url 中附加身份验证 token 后将它们重定向回我们的服务。使用它,这是我的服务所采取的步骤。

我添加了一个 System.ServiceModel.ServiceAuthorizationManager 实现,并覆盖了 CheckAccessCore 方法以检查 cookie/ header 或 url 中的身份验证 token 。如果找到,我会验证 token 是否有效。该方法仅返回 true 或 false,表明请求是否通过了身份验证。如果消息通过,我创建了一个 IExtension 对象来包含一些数据并将其添加到 OperationContext 扩展中。

我还添加了 IDispathMessageInspector 的实现。这有 AfterReceiveRequest 和 BeforeSendReply 方法。我使用 BeforeSendReply 方法来劫持响应。如果消息未通过身份验证(在 OperationContext 扩展中没有我的 IExtension 对象),我将 WebOperationContext.Current.OutgoingResponse.StatusCode 设置为重定向,并将 Location 设置为身份验证服务的 url。

如果确实通过了身份验证,我确保身份验证 token 位于 BeforeSendReply 方法的响应消息 cookie/ header 中。

This article帮助我弄清楚如何连接起来。这是最好的方法吗?不知道。但这适用于我的 WCF/REST 服务。它阻止所有未经身份验证的消息进入我的 ServiceContract 实现,将所有请求重定向到身份验证服务。

关于xml - WCF - SSO 身份验证 token 和 POX 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338380/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com