none
启用WCF的MembershipProvider身份验证后,如何使用此身份访问同域内其他WCF服务 RRS feed

  • 问题

  • 各位好:

    最近在做一个企业内部信息化的项目.该系统中包括了应用在Internet环境中的windows客户端(C#开发),以及企业内部的Web应用程序(ASP.NET).其中为了不同系统间进行通信,采用了WCF服务(IIS托管).windows客户端需要登录验证,于是我配置了WCF的MembershipProvider服务,将WCF用作统一身份验证服务.现在的问题是:企业中,包括多个WCF服务,多个Web应用,以及多个windows客户端.当在任一客户端通过WCF身份验证服务成功登录后,能否做到:使用此验证过的身份凭据访问其他的WCF服务而不需要再经过WCF服务的验证?同样的,在一个ASP.NETweb应用程序登录后,去访问其他的Web应用程序或者WCF服务都不需要再次进行验证,而只要持有当前验证过的凭据就可以了.这种场景有点类似Web应用的单点登录,现在,我希望单点登录能够扩展到WCF服务中.不知道有没有人处理过类似的问题,谢谢各位啦!


    Just do myself...
    2010年7月11日 7:42

答案

全部回复

  • 可以对其它wcf服务使用 wsFederationHttpBinding 绑定.
    • 已标记为答案 Mog Liang 2010年7月21日 2:43
    2010年7月12日 2:50
  • 你好,

    如Galactica所说,你可以用Federation Security来实现WCF Single Sign On。把身份验证独立出来,作为SecurityTokenService(STS),然后把其他WCF与STS建立信任关系,称RelayParty(RP)。这样,用户只用向STS请求一次token,就可在之后访问RPs时不再验证身份。

    微软提供了一套framework用来协助实现此场景,建议你去看看

    Windows Identity Foundation
    http://msdn.microsoft.com/en-us/library/ee748475.aspx

    Windows Identity Foundation Training kit
    http://www.microsoft.com/downloads/details.aspx?FamilyID=C3E315FA-94E2-4028-99CB-904369F177C0&displaylang=en&displaylang=en

    谢谢

     


    Mog Liang
    • 已标记为答案 Mog Liang 2010年7月21日 2:43
    2010年7月12日 8:27
  • 非常抱歉,前段时间出差有事,一直未能登录上来查看问题的回复情况。

    首先,很感谢Mog Liang和Galactica的及时答复和帮助。

    我也在其他地方看到解决WCF SSO的建议。不过,好像目前还少有人完全实现类似的场景。不过通过STS,发布统一的Token,对WCF Service进行身份识别是非常有效的做法。我后面也会尝试去解决这个问题。也许需要很长的时间,不过我会在期间把自己遇到的问题向大家传达,以便能与大家分享相关的经验。

    谢谢!


    Just do myself...
    2010年7月21日 5:19