小编NEP*_*ris的帖子

使用证书加密数据时,如何使WIF使用RSA15?

我一直在研究一个WCF服务,它将返回一个Base64编码的字符串,实际上是一个完整的SAML响应XML文档.由于此信息将传递给供应商,因此我必须满足他们对SAML文档的外观和编码方式的要求.我无法获得满足其要求的输出.

我知道WCF和WIF一起应该帮助我.我最初使用WIF构建服务来创建SAML断言(令牌)和其他C#代码以生成最终的SAML文档.除文档的<EncryptedData>节点外,所有这些都可以满足供应商的要求.本节使用AES256和RSAOAEP,但供应商需要AES128和RSA15.因此,我正在寻求解决方案.任何帮助将不胜感激.

这是一个漫步.

该服务接受GUID,该GUID用于调用数据库并返回字段.然后像这样使用它们:

DataTable userData = GetDataForUser(userId);
List<Claim> claims = new List<Claim>()
{
    new Claim("ClientId", "NameOfClient")
};
foreach (DataRow row in userData.Rows)
{
    string memberId = row["MemberId"].ToString().Trim();
    string firstName = row["FirstName"].ToString().Trim();
    string lastName = row["LastName"].ToString().Trim();
    DateTime dob = Convert.ToDateTime(row["DateOfBirth"], CultureInfo.InvariantCulture);

    claims.Add(new Claim("MemberId", memberId));
    claims.Add(new Claim("FirstName", firstName));
    claims.Add(new Claim("LastName", lastName));
    claims.Add(new Claim("DOB", dob.ToString("MM/dd/yyyy")));
}

return claims;
Run Code Online (Sandbox Code Playgroud)

然后我创建一个像这样的SecurityTokenDescriptor:

SecurityTokenDescriptor descriptor = new SecurityTokenDescriptor();
Run Code Online (Sandbox Code Playgroud)

索赔被添加到描述符中,如下所示:

descriptor.Subject = new ClaimsIdentity(claims);
Run Code Online (Sandbox Code Playgroud)

指示描述符加密令牌,如下所示:

descriptor.EncryptingCredentials = GetEncryptingCredentials();
Run Code Online (Sandbox Code Playgroud)

并且GetEncryptingCredentials()例程如下所示:

private EncryptedKeyEncryptingCredentials GetEncryptingCredentials()
{
    // Get the Encrypting …
Run Code Online (Sandbox Code Playgroud)

wcf wif

2
推荐指数
1
解决办法
1380
查看次数

标签 统计

wcf ×1

wif ×1