2017-01-04 3 views
1

Safari를 클라이언트로 사용하여 WebAPI에서 JWT 무기명 토큰을 얻는 방법은 무엇입니까?

개요 I 엔드 포인트를 보호하기 위해 JWT 토큰을 사용하는 WebApi 2.0 프로젝트가 있습니다. 사용자가 내 웹 응용 프로그램에 로그인하면 AJAX 요청이 API에 전달되어 API에 전달되고 베어러 토큰이 생성되어 사용자에게 전달 된 다음 세션 종료 클라이언트 측에 저장되어 보호 된 끝점에 대한 요청이 이루어집니다.

내 웹 응용 프로그램과 API는 모두 CORS를 사용하여 https를 통해 호스팅됩니다.

문제 파이어 폭스, 크롬, 인터넷 익스플로러와 에지를 사용할 때 모두가 잘 작동

. 그러나 iPhone 또는 iPad를 통해 웹 응용 프로그램에 로그인하면 API가 호출되기도하므로 토큰이 반환되지 않습니다. 내 웹 애플리케이션이 보호 된 엔드 포인트에서 데이터를 가져올 수 없다는 것을 의미합니다.

연구 그것은 위의 질문에 사용자처럼 보이는 다시 내가 지금 무엇입니까보다 더 서버에서 토큰을 받고 이상입니다

Https requests with Authorization not working via Safari

.

왜 이런 일이 일어날 지 알 수있는 사람이 있습니까? 2017년 5월 1일

업데이트는 바로이 질문을하고보다 정확한 응답합니다. 이것은 무기 토큰 생성이나 소비에 문제가 아니 었습니다. Safari가 async : false를 설정하지 않고 실제로 내 API에 AJAX 요청을하지는 않을 것입니다.

답변

0

하루 종일 머리카락을 꺼내서 마침내 해결책을 찾았습니다.

$.ajax({ 
     type: 'POST', 
     url: apiBase + 'OAuth/Token', 
     data: loginData, 
     async: false // Adding this fixed my issue. 
    }).done(function (data) { 
     sessionStorage.setItem("tokenKey", d.access_token); 
    }); 
:이처럼 내 요청에 거짓

이 문제를 데 다른 사람들을위한

, 내가 그것을 고정 방법은 비동기를 추가했다

관련 문제