2015-03-28 3 views
0

как я могу генерировать билет проверки подлинности для Sinch с помощью JavaScript (плзло время не nodejs) Я использую парсер для аутентификации пользователей, то я хотел бы передать эту сессию SinchСоздания билета аутентификации

добавить эту криптографическую LIBS в свой файл HTML

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/core-min.js"></script> 
 
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-utf16-min.js"></script> 
 
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script>

var userTicket = { 
         'identity': {'type': 'username', 'endpoint': user._serverData.username}, 
         'expiresIn': 3600, 
        'applicationKey': sinchClient.applicationKey, 
         'created': new Date().toISOString() 
       } 



        var userTicketJson = JSON.stringify(userTicket).trim(); 
        var userTicketBase64 = btoa(userTicketJson); 


    // TicketSignature = Base64 (HMAC-SHA256 (ApplicationSecret, UTF8 (UserTicketJson))) 




       var digest = CryptoJS.HmacSHA256(appSecret,userTicketJson); 
       var signature = CryptoJS.enc.Base64.stringify(digest); 



    // UserTicket = TicketData + ":" + TicketSignature 
       var signedUserTicket = userTicketBase64.replace('=','') + ':' + signature.replace('=',''); 




        sinchClient.start({'userTicket':signedUserTicket}) 
         .then(function(data) { 
          console.log(data) 
         }) 
         .fail(function(error) { 
          console.log(error) 
         }); 

ответ

4

предпочтительный способ для генерации аутентификации т icket на бэкэнд или в среде, которую вы контролируете, а не на клиенте - по соображениям безопасности! Для генерации билета в Javascript существует эталонная реализация в Javascript, доступная для узла (переносимая браузером вручную или с помощью браузера): https://www.npmjs.com/package/sinch-ticketgen

Генератор билета аутентификации также включен в Sinch JS SDK для разработки, тестирования и серверных целей. Просто укажите «applicationSecret» в дополнение к «applicationKey» при создании экземпляра SinchClient, и теперь вы можете запустить synchClient с любым идентификатором пользователя.

Пример:

sinchClient = new SinchClient({ 
    applicationKey: 'SOME_APPLICATION_KEY', 
    applicationSecret: 'SOME_APPLICATION_SECRET', 
}); 

sinchClient.start({username: 'SOME_USERNAME'}); 

Однако, имейте в виду, что это должно не может быть сделано на стороне клиента в производственной среде, так как приложение секрет будет открыт, и было бы тривиально для атакующему, чтобы воспользоваться.

Вместо этого, пожалуйста, убедитесь, что вы создали билет аутентификации в защищенной среде, где у вас есть доступ к вашему приложению.

+0

Спасибо, но я узнал метод без использования nodejs :) –

Смежные вопросы