0

私は msdn の CustomToken の例を使用しており、新しいクレームを追加して以前に作成したトークンを再構築するか、それを分解して新しい値を追加し、新しいトークンを作成するというアイデアをいじっています。リライングパーティのプリンシパルに新しいクレームを追加しようとしましたが、機能しませんでした。トークンを再構築しようとしましたが、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;
}
4

0 に答える 0