【问题标题】:How to set user principal name of service identity of an STS issuer for a ws-federation binding by config?如何通过配置为 ws-federation 绑定设置 STS 颁发者的服务标识的用户主体名称?
【发布时间】:2012-04-02 20:12:17
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: wcf kerberos federation


    【解决方案1】:

    我找到了有关设置 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 代替别名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 2018-10-13
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多