2017-08-10 9 views
0

私が保護されたAPIにリクエストを作るためにしようとしているので、私はこのようにHttpClientに承認リクエストヘッダを追加する必要があります。ASPNETコアコントローラからJWTTokenを取得するには?

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth token"); 

しかし、どのように認証トークン(「あなたのOauthトークン」)を取得しますコントローラーから?

PS:既にIdentity Server 4に対して認証済みです。 AspNetCoreで開発されたアプリケーションです。

全コード:

[Authorize] //Already authenticated 
    public IActionResult SomeControllerAction() 
    { 
     var claimsIdentity = User.Identity as ClaimsIdentity; //where is JWTToken?? 
     var JWTTokne = "how to get?"; 

     using (var client = new HttpClient()) 
     { 
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", JWTTokne); 
      var result = client.PostAsync("someurl", new StringContent(json, Encoding.UTF8, "application/json")).Result; 
      //more code to handle result.... 
     } 

     return View(); 
    } 
+0

[認定一そのコントローラのアクションは? IOWは、要求にAuthorizationヘッダーを送信したクライアントを使用して呼び出されたコントローラですか? – Lutando

+0

はい、すでに認証された操作が承認されています。 – user1203003

答えて

1

あなたはちょうどHttpContext.Request.Headers["Authorization"]でヘッダーからトークンを取得することができ、コントローラにいるので、あなたは、HTTPコンテキストで見ることができます。これは明らかに、クライアントがそのヘッダを要求に入れた場合にのみ機能します。

2

あなたが使用してアクセストークンを取得することができます。access_tokenは用

// Get the access token. 
var accessToken = await HttpContext.Authentication.GetTokenAsync("access_token"); 

var client = new HttpClient(); 

// Set the access token as the bearer token (Authorization header of the request). 

client.SetBearerToken(accessToken); 
0

コア

var accessToken = await HttpContext.Authentication.GetTokenAsync("access_token"); 

MVC 5コントローラでは、私が保護されたWeb API 2では

var token = (User as ClaimsPrincipal).FindFirst("access_token").Value 

を使用しました(コアではない)方法を使用しました

var access_token = ControllerContext.Request.Headers.Authorization.Parameter; 
0

AspNet Core 2.0と新しい認証システムでは、HttpContextの拡張メソッドontopを使用するだけです。

HttpContext context; 
await context.GetTokenAsync("access_token") 

とMVCコントローラ内

public class MyController : Controller 
{ 
    public IActionResult Get(){ 
     var token = await HttpContext.GetTokenAsync("access_token"); 

    } 

} 
関連する問題