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

ITFoxTec.Identity.Saml2库是否支持同时签名SAML响应与断言?

ITFoxTec.Identity.Saml2 同时签名SAML响应与断言实现示例

ITFoxTec.Identity.Saml2完全支持同时对SAML响应和断言进行签名,以下是具体实现步骤和代码示例:

1. 初始化SAML配置

首先配置SP(服务提供商)的基本信息和签名证书:

using ITFoxTec.Identity.Saml2;
using ITFoxTec.Identity.Saml2.Cryptography;
using System.Security.Cryptography.X509Certificates;

var saml2Config = new Saml2Configuration();
// 设置SP实体ID
saml2Config.Issuer = "https://your-sp-domain.com/saml2";
// 设置Okta的SSO地址
saml2Config.SingleSignOnDestination = new Uri("https://your-okta-domain.com/app/your-app-id/sso/saml");

// 加载用于签名的证书(PFX格式,包含私钥)
var signingCert = new X509Certificate2(
    path: "path/to/your-signing-cert.pfx",
    password: "your-cert-password",
    keyStorageFlags: X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet
);
saml2Config.SigningCertificate = signingCert;

// 可选:指定签名算法(需与Okta配置一致,默认SHA256)
saml2Config.SignatureAlgorithm = Saml2SecurityAlgorithms.RsaSha256Signature;

2. 创建并签名SAML响应与断言

构建SAML响应对象,同时开启响应签名和断言签名:

// 创建SAML响应实例
var saml2Response = new Saml2Response(saml2Config);

// 设置响应状态和用户标识
saml2Response.Status = Saml2StatusCodes.Success;
saml2Response.NameId = new Saml2NameId("user-unique-id", NameIdFormat.Unspecified);

// 构建断言
var assertion = new Saml2Assertion(saml2Config)
{
    Subject = new Saml2Subject(new Saml2NameId("user-unique-id", NameIdFormat.Unspecified)),
    // 设置断言有效期
    Conditions = new Saml2Conditions
    {
        NotBefore = DateTime.UtcNow.AddMinutes(-5),
        NotOnOrAfter = DateTime.UtcNow.AddMinutes(10)
    },
    // 添加用户属性
    Attributes = {
        new Saml2Attribute("email", "user@your-domain.com"),
        new Saml2Attribute("displayName", "User Full Name")
    }
};

// 将断言添加到响应中
saml2Response.Assertions.Add(assertion);

// 开启响应签名和断言签名
saml2Response.SignResponse = true;
saml2Response.SignAssertion = true;

// 生成最终的签名后XML
var signedSamlXml = saml2Response.ToXml().OuterXml;

3. Okta侧配置注意事项

  • 在Okta的应用SAML配置中,确保“签名选项”设置为签名响应和断言(具体选项名称可能因Okta版本略有不同)
  • 将SP签名证书的公钥(CER格式)上传到Okta的应用配置中,确保Okta信任该签名证书
  • 确认Okta配置的签名算法与代码中指定的一致(如SHA256)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:22:53