2016-03-23 16 views
1

許可リクエストからjwtトークンの生の値を取得したいと思います。私はそれがすべての主張の根源だと知っていますが、元の生の価値を必要とするユースケースがあります。それを取得する方法はありますか?認証タイプに依存する場合は、OpenIdConnect(scheme = Oidc)を使用しています。asp.netコアのraw jwtトークン値を取得します。

答えて

0

生の意味は?トークン自体は生のものであり、トークン自体の基底64です。トークンをjwt.ioに置くと、いつでもデコードすることができます。秘密のものではありません。

生のトークンが必要なので、内部にある値が必要な場合は、これらの要素のコピーを追加のアイテムとして認証応答に追加することをお勧めします。

+0

実際には、ユーザーの着信要求からトークンを抽出し、それをサーバーからダウンストリームサービスへの送信要求で転送する必要があります。 – gzak

0

あなたはこれを試すことができます。

// add JWT authentication (change to OIDC if you prefer) 
app.UseJwtBearerAuthentication(new JwtBearerOptions 
{ 
    StoreToken = true  
}); 


// then in your code... 
var rawToken = await authenticationManager.GetTokenAsync("<name_of_signin_scheme>", "access_token"); 

欠点があればトークンは、認証Cookieで[プロパティに格納されるということです。

それ以外の場合は、生のトークンをReceivedTokenイベントで取得できます。

GetTokenAsync()メソッドは、Microsoft.AspNetCore.Authenticationの同じ名前空間にあります。

+0

'authenticationManager'オブジェクトのタイプは何ですか?そして 'GetTokenAsync'は拡張メソッドですか?私は 'Microsoft.AspNetCore.Http.Authentication.AuthenticationManager'を見ていますが、私はそのメソッドを見ていません。 – gzak

+0

これは実際には拡張メソッドです。単に 'Microsoft.AspNetCore.Authentication.AuthenticationTokenExtensions'でそれを見つけました。私はそれを試してみましょう、これが動作すれば私はあなたの答えを受け入れるでしょう。 – gzak

+0

その拡張メソッドにアクセスするには、どのパッケージ/名前空間を追加する必要がありますか?私は 'Microsoft.AspNet.Security'を追加しようとしましたが、私はまだ' Microsoft.AspNetCore'名前空間を持っていません(そのサブ名前空間のどれも)。 – gzak

0

まさにこの問題についての短いブログの記事があります:http://www.jerriepelser.com/blog/aspnetcore-jwt-saving-bearer-token-as-claim/

あなたはAuthenticationPropertiesにトークンを保存することができますいずれか(も@ycrumeyrolleの答えを参照)。トークンをOnTokenValidatedコールバックに要求として保存します。これはJwtBearerOptionsに設定されています。すべての詳細についてはリンク先の記事をご覧ください。

関連する問題