0

使用 WS-Federation 绑定时,如何在 WCF 客户端配置中为颁发者STS指定服务身份主体名称?

我有一个在前端服务器上的域帐户下运行的应用程序池,尝试使用联合身份验证到应用服务器上的后端服务(在域帐户下运行),使用 STS 也在应用服务器上和域帐户下运行。

为了正确使用 Kerberos,我需要在前端客户端上设置 STS 的用户主体名称。我看不出该怎么做。

我遇到了一个连接问题,即当使用 FQDN 指定颁发者并且 Kerberos 失败(SSPI 协商失败)时回退到 NTLM 不起作用我认为是因为我在配置中没有颁发者主体名称。如果我改为使用 IP 地址设置发行者,那么我认为使用 NTLM 对 STS 的身份验证会成功,所以我有一个解决方法。

STS 基于该端点上的 Windows 身份验证发布令牌。它还有其他用于表单类型身份验证等的端点。

可能我们网络上的一个相关问题是,如果没有手动将服务器添加到 IE 中的本地 Intranet 区域,则回调 Web 服务的 Silverlight 客户端无法正常工作。似乎由于某种原因,应用服务器不被视为位于同一域中。任何线索非常感谢!

4

1 回答 1

0

我找到了有关设置 STS 的用户主体名称的解决方案。我只需要在联邦绑定的 issuer 元素中设置它:好的,不知道为什么我以前找不到这个,但周一早上第一件事就是立即弹出答案:http: //msdn.microsoft.com /en-us/library/aa347735.aspx

wsfederation 的 issuer 元素是一个端点配置,允许您在其中设置用户主体名称。

上面链接中的架构在这里:

<issuer address="Uri" >
   <headers>
      <add name="String"
                 namespace="String" />
   </headers>
   <identity>
           <certificate encodedValue="String"/>
      <certificateReference findValue="String" 
         isChainIncluded="Boolean"
         storeName="AddressBook/AuthRoot/CertificateAuthority/Disallowed/My/Root/TrustedPeople/TrustedPublisher"
         storeLocation="LocalMachine/CurrentUser"
                  x509FindType=System.Security.Cryptography.X509certificates.X509findtype/>
      <dns value="String"/>
      <rsa value="String"/>
      <servicePrincipalName value="String"/>
      <usePrincipalName value="String"/>
   </identity>
</issuer>

关于网络问题,这是一个 DNS 问题。使用 PTR 代替别名。

于 2012-03-19T08:43:12.607 回答