将声明添加到已制作的令牌

时间:2013-10-29 15:29:44

标签: c# asp.net token

我正在使用来自msdn的CustomToken示例,并且想要添加新声明并重建以前制作的令牌或将其分开,添加新值并制作新令牌。我已经尝试向relyingparty中的主体添加新的声明,但是没有用,我尝试重建令牌并在CustomeSecurityTokenServiceConfiguration上出现错误'已经添加了具有相同键的项目'并且我已经尝试了近十几个不同的方式没有结果。关于如何做到这一点的任何想法,还是我在寻找不存在的东西?

尝试依赖默认

            if (claimsPrincipal != null)
            {
ClaimsIdentity identity = claimsPrincipal.Identity as ClaimsIdentity;
BootstrapContext bootstrapContext = identity.BootstrapContext as BootstrapContext;
var newclaims = new List<Claim>
    {
       new Claim(ClaimTypes.PostalCode,"56789")
     };
foreach(Claim claim in claimsPrincipal.Claims)
      {
          newclaims.Add(claim); 
      }

var claimsIdentity = new ClaimsIdentity(newclaims, "Name", "UserName", ClaimTypes.Role);

ClaimsPrincipal pass = new ClaimsPrincipal(claimsIdentity);

FederatedPassiveSecurityTokenServiceOperations.ProcessRequest(Request, pass, SimpleWebToken.CustomSecurityTokenServiceConfiguration.Current.CreateSecurityTokenService(), Response);

//SimpleWebToken.SimpleWebTokenHandler Added = new SimpleWebToken.SimpleWebTokenHandler();
//Added.AddtoCreatedToken(pass);

}

我也尝试添加自己的创建令牌

public SecurityToken AddtoCreatedToken(ClaimsPrincipal claimsPrincipal)
{
    if (claimsPrincipal == null)
    {
        throw new ArgumentNullException("tokenDescriptor");
    }

    NameValueCollection properties = new NameValueCollection();

    foreach (Claim claim in claimsPrincipal.Claims)
    {
        properties.Add(claim.Type, claim.Value);
    }

    SimpleWebToken token = new SimpleWebToken(properties);
    return token;
}

0 个答案:

没有答案