2016-08-26 3 views
0

トークンをSOAPサービスに渡して、トークンが有効であることを検証しました。私はSecurityTokenを持っています。デバッグモードではすべてのクレーム、特に別のメソッドに渡したいuserIdクレームを見ることができます。私はクレームをどうやって得るのか分からないようです。今の私はトークンの文字列バージョンデコード(トークンのいずれも検証済みの文字列バージョンを、私は、少なくとも成功した検証が終わるまで待っていた。)ここでは、そのコードブロックである:私は主張を取得するにはどうすればよい認証されたSecurityTokenのクレームを取得する方法

SecurityToken validatedToken = null; 

if (VerifyToken(sPassword, ref response, ref validatedToken)) 
{ 
    var claimsObj = JObject.Parse(Encoding.UTF8.GetString(Base64Url.Decode(claims))); 
    JToken userId = claimsObj.GetValue("userId"); 
    return implClass.Process(userId); 
} 

SecurityTokenからの脱出?

validatedToken.Id; // not it 
validatedToken.ToClaimsPrincipal(cert); // doesn't work 

他には何も限り公開されたプロパティとして私には有望思えませんが、私は、デバッガで主張を見ることができるので、私はただ見ていないよな方法があることを確認しています。

答えて

0

デバッガがベースのSecurityTokenクラスではなく、オブジェクトの実際の型を使用しているため、主張が表示されている可能性があります。実際のタイプとしてキャストすると、クレームへのアクセスが容易になります。

これは、またはsecurityTokenHandlerを使用してクレームコレクションを検証して取得します。

https://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandler.validatetoken(v=vs.110).aspx

関連する問題