2016-11-02 7 views
1

ローカルでトークンを取得するためにAPIを呼び出すことができますが、このトークンをASP.NET MVCフロントエンドアプリケーションでどのように使用してクレームを得ることができますか。私はこのようなものを試しましたが(下記参照)、トークンを復号化してクレームを得ることができないものもあります。マシンキーは同じであることを確認しました。MVCフロントエンドアプリケーションのベアラトークンからクレームを取得できません

var unencryptedToken = Startup.OAuthBearerOptions.AccessTokenFormat.Unprotect(accessToken); 
//(This line is always returning the null) 
var identity = unencryptedToken.Identity; 
var id = new ClaimsIdentity(identity.Claims, DefaultAuthenticationTypes.ApplicationCookie); 

これで私を手伝ってもらえますか?

トークンを生成するために私のwebapiを構築するために、以下の記事を使用しました。 http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

よろしく、 Rupesh

答えて

0

古い質問けれども、私はこの今日を実装する必要がありました。私はそれが簡単役割のカンマ区切りの文字列を返すようにするためにextension methodを追加した

var userName = idt.Claims.Where(x => x.Type == "UserName").Select(x => x.Value).First(); 
var roles = idt.Claims.Where(x => x.Type == "role").Select(x => x.Value).FirstOrDefault(); 

return new[] {$"'userNameClaim':'{userName}','rolesClaim':'{roles}'"}; 

public static class RequestExtensions 
{ 
    public static string GetRoles(this HttpRequestContext context) 
    { 
     var idt = context.Principal.Identity as ClaimsIdentity; 
     if (idt == null) 
      return string.Empty; 
     var roles = idt.Claims.Where(x => x.Type == "role") 
           .Select(x => x.Value).FirstOrDefault(); 
     return roles; 
    } 

    public static string GetUserName(this HttpRequestContext context) 
    { 
     var idt = context.Principal.Identity as ClaimsIdentity; 
     if (idt == null) 
      return string.Empty; 
     var userName = idt.Claims.Where(x => x.Type == "UserName") 
           .Select(x => x.Value).FirstOrDefault(); 
     return userName; 
    } 
} 
あなたは、このような RequestContext's Userオブジェクトから情報を取得しようとすることができます
関連する問題