You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

util.lib.lua 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. -- Token authentication
  2. -- Copyright (C) 2015 Atlassian
  3. local jwt = require "jwt";
  4. local _M = {};
  5. local function _get_room_name(token, appSecret)
  6. local claims, err = jwt.decode(token, appSecret);
  7. if claims ~= nil then
  8. return claims["room"];
  9. else
  10. return nil, err;
  11. end
  12. end
  13. local function _verify_token(token, appId, appSecret, roomName, disableRoomNameConstraints)
  14. local claims, err = jwt.decode(token, appSecret, true);
  15. if claims == nil then
  16. return nil, err;
  17. end
  18. local issClaim = claims["iss"];
  19. if issClaim == nil then
  20. return nil, "'iss' claim is missing";
  21. end
  22. if issClaim ~= appId then
  23. return nil, "Invalid application ID('iss' claim)";
  24. end
  25. local roomClaim = claims["room"];
  26. if roomClaim == nil and disableRoomNameConstraints ~= true then
  27. return nil, "'room' claim is missing";
  28. end
  29. if roomName ~= nil and roomName ~= roomClaim and disableRoomNameConstraints ~= true then
  30. return nil, "Invalid room name('room' claim)";
  31. end
  32. return true;
  33. end
  34. function _M.verify_token(token, appId, appSecret, roomName, disableRoomNameConstraints)
  35. return _verify_token(token, appId, appSecret, roomName, disableRoomNameConstraints);
  36. end
  37. function _M.get_room_name(token, appSecret)
  38. return _get_room_name(token, appSecret);
  39. end
  40. return _M;