2017-01-18 1 views
1

저는 백본으로 Cordova 응용 프로그램을 만들고 있는데 목표는 JSON 웹 토큰 (JWT)으로 소켓 인증을 달성하는 것이 었습니다.webcrypto-shim도 cryptotletle이 존재하지 않습니다.

내 JWT에 서명하려면 브라우저에서 앱을 사용할 때 webcrypto-jwt을 사용했고 제대로 작동했습니다.

은 그 때 나는 webcrypto-jwt 브라우저의 window.crypto.subtle 모듈을 사용하여 ... 내 모바일 및 BBAAMM에 응용 프로그램을 시도했다.

var cryptoSubtle = (window.crypto && crypto.subtle) || 
(window.crypto && crypto.webkitSubtle) || 
    (window.msCrypto && window.msCrypto.Subtle); 

그러나 안드로이드 웹보기에 어떤 미묘한!

그래서 나는 webcrypto-shim을 사용하여 cryptotle을 추가했습니다. 그러나 그것은 효과가 없습니다.

내 코드가 window 개체의 스크린 샷입니다. 그것은 암호 키를 가지고 있지만 그것에 미묘한 없습니다!

screen of window object

그래서 난 내 JWT를 로그인 할 수 없습니다.

+0

은 (예를 들어 _How가 Y와 기술 X을 결합 _?) –

답변

1

더 많은 연구와 테스트를 거친 후 cordova에서 작동하는 순수 js 라이브러리를 발견했습니다.

jsrsasign

나는 나의 JWT를 authentificate하는 데 사용했다. cryptotletle 모듈은 사용하지 않습니다.

 // Header 
     var oHeader = { alg: 'HS256', typ: 'JWT' }; 
     // Payload 
     var oPayload = {}; 
     var tNow = KJUR.jws.IntDate.get('now'); 
     var tEnd = KJUR.jws.IntDate.get('now + 1day'); 
     oPayload.iss = "http://foobar.com"; 
     oPayload.sub = "mailto:[email protected]"; 
     oPayload.iat = tNow; 
     oPayload.exp = tEnd; 
     oPayload.jti = "id123"; 
     oPayload.aud = "http://someUrl"; 
     oPayload.email = "userEmail"; 
     oPayload.pwd = "userPassword"; 
     oPayload.deviceId = "deviceId"; 

     // Sign JWT. 
     var sHeader = JSON.stringify(oHeader); 
     var sPayload = JSON.stringify(oPayload); 
     //secret -> your secret that the server gave you. 
     var sJWT = KJUR.jws.JWS.sign("HS256", sHeader, sPayload, secret); 
     console.log(sJWT); 

그렇습니다. 그것은 내 문제를 해결했다.
정의되지 않은 cryptotle 오류가 여전히 존재한다는 것을 알고 있습니다. 나는 그 문제에 대한 해결책을 찾지 못했습니다.
언젠가 cordova를 담당하는 개발자는 다른 모든 브라우저에서 찾을 수있는 cryto 모듈을 지원하기 위해 노력할 것이지만 현재로서는 유일한 솔루션은 제 3 자 라이브러리를 사용하는 것입니다.

2

WebCryptographyApi는 안드로이드 웹보기에서 지원되지 않으며, webcrypto - 심이 API를 구현 webcrypto이 접두어로 한 도서관이 브라우저를 해결하기 위해 대상

구성 요소 및 버그를 대상으로되지 않습니다

인터넷 익스플로러 11, 모바일 인터넷 익스플로러 11, Safari 8 이상, iOS Safari 8 이상.

예상되는 동작이 나타납니다. 난 window.crypto 보여주는 코르도바 이전 구현입니다 생각합니다.

키 저장소가 필요한 경우 Android 기본 키 저장소 (또는 빌드하면 iOS)를 사용하는 것이 좋습니다. 암호화 기능을 찾고 있다면 순수한 자바 스크립트 라이브러리를 포함하십시오

+0

꼭 필요한 않는 한 제목에 태그를 두지 마십시오 귀하의 답변에 감사드립니다. 다음으로 순수 JS에서 jwt 서명을 검색하겠습니다. – Doctor

관련 문제