当我尝试从另一个asp.net应用程序(IP)验证的asp.net应用程序(RP)调用WCF服务时,我收到一条带有登录页面内容的错误消息(它正在尝试到达登录页面,因为它无法验证请求。)
身份提供者:_http://localhost/AuthenticatonWS/Login.aspx
依赖方网站:_http://localhost/RPWebsite/Default.aspx
WCF服务:_http://localhost/RPWebsite/Service1.svc
(在我的解决方案中,我从default.aspx.cs调用service1.svc)
我不希望该服务是匿名的。目前,该站点(RPWebsite)使用STS并信任本地身份提供商,但在生产中,它可以通过ADFS信任任何外部身份提供商。
任何人都可以指导我如何将令牌信息从aspx页面传递给服务,我确实从互联网上尝试了几个例子,但我无法让它工作。
答案 0 :(得分:0)
问题很可能是RPWebsite在ClaimsAuthorizationModule
中使用<system><httpModules>
或<system.webserver><modules>
中使用web.config
。这会导致任何Web服务调用被重定向到STS进行身份验证,就像您观察到的那样是一个交互式浏览器请求。
或者,可以将此模块添加到web.config
的WIF特定部分中,即<microsoft.identityModel><service>
中,并且在此情况下,此模块仅用于基于声明的WCF Web服务调用。您可以使用以下格式添加它:<claimsAuthorizationManager type="MyNamespace.CustomClaimsAuthenticationManager, MyAssembly"/>
。 (此类型必须扩展ClaimsAuthorizationManager
,如WIF文档页面"ClaimsAuthenticationManager, ClaimsAuthorizationManager, and OriginalIssuer"中所述。)
参考文献:Vittorio Bertocci,“编程WIF”,p。 43。
答案 1 :(得分:0)
我认为有几种选择:
我建议使用第二个选项,您可以从Dominick Baier's blog找到更多有用的信息和指南。
只需2美分。