You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 4.8前端SP1与WCF后端SP2基于ADFS 4.0的SAML令牌复用问询

方案可行性与实现指导

你的需求完全可以基于.NET 4.8和ADFS 4.0实现,核心思路是利用ADFS的多受众令牌支持或ActAs令牌转发机制,替代存在问题的Kerberos双跳架构。以下是具体实现方案和配置要点:

两种核心实现方案

方案1:ADFS签发包含SP2受众的多断言令牌

让ADFS直接为SP1签发同时包含SP1和SP2受众的SAML令牌,这样SP1验证令牌后可直接将其传递给SP2,SP2验证令牌时会确认自身受众在允许列表内。

配置步骤:

  • 在ADFS中分别为SP1和SP2创建信赖方信任,记录两者的标识符(比如https://sp1.yourdomain.com和https://sp2.yourdomain.com/service)。
  • 修改ADFS中SP1的签发转换规则,添加一条规则将SP2的标识符加入令牌的AudienceRestriction列表。示例规则逻辑:

    添加声明类型http://schemas.microsoft.com/ws/2008/06/identity/claims/audience,值设为SP2的标识符,同时保留SP1的受众声明。

  • 前端SP1在发起SAML认证请求时,可在AuthnRequest的AudienceRestriction字段中同时指定SP1和SP2的标识符,确保ADFS生成包含双受众的令牌。

方案2:基于ActAs的令牌转发(更规范的委托模式)

SP1先获取针对自身的SAML令牌,再以用户身份向ADFS请求一个专门针对SP2的新令牌(即ActAs场景),SP2验证这个新令牌即可完成用户身份确认。

配置步骤:

  • 在ADFS的SP1信赖方属性中,勾选允许此信赖方作为其他用户请求令牌(ActAs权限)。
  • SP1验证完ADFS签发的用户令牌后,使用WCF的ChannelFactory创建调用SP2的通道,通过SecurityTokenProvider将用户令牌作为ActAs令牌,向ADFS请求SP2的专用令牌。
  • SP2的WCF配置信任ADFS作为令牌签发方,验证令牌的受众为自身标识符。

WCF服务(SP2)核心配置示例

以下是SP2使用issuedToken模式的关键配置(web.config):

<system.serviceModel>
  <bindings>
    <wsHttpBinding>
      <binding name="IssuedTokenBinding">
        <security mode="Message">
          <message 
            clientCredentialType="IssuedToken" 
            negotiateServiceCredential="false" 
            establishSecurityContext="false"/>
        </security>
      </binding>
    </wsHttpBinding>
  </bindings>
  <behaviors>
    <serviceBehaviors>
      <behavior name="SP2ServiceBehavior">
        <serviceMetadata httpGetEnabled="true"/>
        <serviceCredentials>
          <issuedTokenAuthentication>
            <!-- 指定SP2的受众标识符 -->
            <allowedAudienceUris>
              <add value="https://sp2.yourdomain.com/service"/>
            </allowedAudienceUris>
            <!-- 信任ADFS作为签发方 -->
            <issuerRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerRegistry, System.IdentityModel">
              <trustedIssuers>
                <add thumbprint="YOUR_ADFS_CERT_THUMBPRINT" name="http://adfs.yourdomain.com/adfs/services/trust"/>
              </trustedIssuers>
            </issuerRegistry>
          </issuedTokenAuthentication>
        </serviceCredentials>
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <services>
    <service name="SP2.Service" behaviorConfiguration="SP2ServiceBehavior">
      <endpoint 
        address="" 
        binding="wsHttpBinding" 
        bindingConfiguration="IssuedTokenBinding" 
        contract="SP2.IService"/>
    </service>
  </services>
</system.serviceModel>

关键注意事项

  • 令牌有效性验证:SP1必须先验证ADFS令牌的签名、有效期、受众范围,确认合法后再进行转发或请求新令牌。
  • 声明配置:在ADFS的SP1和SP2信赖方中,配置声明规则确保令牌包含UPN、email、sAMAccountName等所需标识类声明,无需额外权限类声明。
  • 加密保护:如果令牌包含敏感信息,需配置ADFS使用SP2的证书加密断言,确保只有SP2能解密令牌内容。
  • 令牌存储:SP1需将用户令牌安全存储(如加密Session、HttpOnly加密Cookie),避免令牌泄露风险。
  • 有效期设置:调整ADFS令牌的有效期,确保覆盖SP1调用SP2的业务流程时长,避免令牌中途过期。

内容的提问来源于stack exchange,提问作者gabrielgbs97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:05:21