2016-10-05 2 views
0

세션에 내 웹 API에서 JWT 토큰과 새로 고침 토큰을 저장하는 ASP.NET MVC 응용 프로그램이 있습니다. 제 질문은 JWT 토큰이 만료되고 새로 고침 할 때해야 할 일입니다..NET MVC 응용 프로그램에서 JWT 만료 처리

  1. 시도는 JWT 토큰을 사용하여 웹 API에 요청을하게하고 무단 (401)를 반환하면 JWT 토큰을 새로 고침 : 제가보기에는 내 두 가지 옵션이 있습니다.

  2. JWT 토큰이 만료되기 전에 타이머를 사용하여 자동으로 새로 고칩니다.

이러한 두 가지 방법 중 하나를 사용하면 어떤 이점이 있으며 어떻게 프로그래밍 방식으로 쉽게 구현할 수 있습니까? 예를 들어, 옵션 1을 사용하는 경우 API를 호출 할 때마다 try와 catch를 사용해야합니까?

+0

* * 왜 당신은 세션에 저장합니까? –

답변

1

API에 대한 호출 횟수를 최소화하기 위해 옵션 2과 함께 가기로 결정했습니다. 나는 다음 JWT가 만료 될 경우도 확인하는 HttpClient를 팩토리 메소드와 기본 컨트롤러 클래스를 생성 :

세션 내 웹 API에서 새로 고침 토큰 JWT-토큰을 저장하는
 public HttpClient GetHttpClient(string baseAdress) 
     { 
      var client = new HttpClient(); 
      client.BaseAddress = new Uri(baseAdress); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
      string token; 
      if (Session["access_token"] != null) 
      { 
       var jwthandler = new JwtSecurityTokenHandler(); 
       var jwttoken = jwthandler.ReadToken(Session["access_token"] as string); 
       var expDate = jwttoken.ValidTo; 
       if (expDate < DateTime.UtcNow.AddMinutes(1)) 
        token = GetAccessToken().Result; 
       else 
        token = Session["access_token"] as string; 
      } 
      else 
      { 
       token = GetAccessToken().Result; 

      } 
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); 
      Session["access_token"] = token; 
      return client; 
     } 
관련 문제