# Invalid signature and browser restriction

**URL:** <https://devforum.zoom.us/t/invalid-signature-and-browser-restriction/140338>\
**Category:** Meeting SDK\
**Created:** [January 7, 2026, 11:31am UTC](https://devforum.zoom.us/t/invalid-signature-and-browser-restriction/140338 "2026-01-07T11:31:29Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![BackstageDev](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/backstagedev/32/61737_2.png) [@BackstageDev](https://devforum.zoom.us/u/BackstageDev)\
**Post date:** [January 7, 2026, 11:31am UTC](https://devforum.zoom.us/t/invalid-signature-and-browser-restriction/140338/1 "2026-01-07T11:31:30Z")

</div>

We are getting a error from attendee session joining 'like browser restriction and signature is invalid’ in the meeting sdk  
Please check and give us an update

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/3/f/3fcbef6821bc1101e619309bfdb51d3d5362b39b.png)

---

<div class="post-metadata">

**Author:** ![freelancer.nak](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/freelancer.nak/32/40968_2.png) [@freelancer.nak](https://devforum.zoom.us/u/freelancer.nak)\
**Post date:** [January 8, 2026, 11:05am UTC](https://devforum.zoom.us/t/invalid-signature-and-browser-restriction/140338/2 "2026-01-08T11:05:20Z")

</div>

@BackstageDev Hi, I hope you are well.

Please verify a few things:

- [marketplace.zoom.us](http://marketplace.zoom.us) → Manage → Select App → Embed → Allow Meeting SDK toggle
- Share your signature generation code snippet or follow the helper below:

```javascript
const KJUR = require('jsrsasign');

function generateSignature({ meeting, role }) {
    const iat = Math.round(new Date().getTime() / 1000) - 30;
    const exp = iat + 60 * 60 * 2;

    const oHeader = {
        alg: 'HS256',
        typ: 'JWT'
    };

    const oPayload = {
        sdkKey: process.env.ZOOM_APP_KEY,
        mn: meeting.id,
        role,
        iat: iat,
        exp: exp,
        appKey: process.env.ZOOM_APP_KEY,
        tokenExp: iat + 60 * 60 * (process.env.MEETING_DURATION_IN_HOURS || 3)
    };

    const sHeader = JSON.stringify(oHeader);
    const sPayload = JSON.stringify(oPayload);
    const signature = KJUR.jws.JWS.sign('HS256', sHeader, sPayload, process.env.ZOOM_APP_SECRET);
    return signature;
}

module.exports = {
    generateSignature
};

```

Feel free to ask if the issue persists.

Thanks,  
Naeem Ahmed
