如何在不提供凭据的情况下在浏览器中使用 Kinesis Video Stream WebRTC

我想使用kinesis video streams webrtc javascript sdk从网页生成视频流。sdk自述文件说我需要提供和accessKeyIdsecrectAccessKey


signalingClient = new KVSWebRTC.SignalingClient({

    channelARN,

    channelEndpoint: endpointsByProtocol.WSS,

    clientId,

    role: KVSWebRTC.Role.VIEWER,

    region,

    credentials: {

        accessKeyId,

        secretAccessKey,

    },

    systemClockOffset: kinesisVideoClient.config.systemClockOffset,

});

有没有办法使它更安全,并避免在javascript代码中提供秘密访问密钥?这是否意味着查看我的网页源的任何人都可以从网页中获取这些凭据并使用它们来访问信令通道?我可以使用 amplify-js Auth 类对经过身份验证的用户使用信令客户端吗?


拉风的咖菲猫
浏览 74回答 3
3回答

POPMUISE

事实证明,我可以在后端内部使用凭据,并使用类向客户端发送预签名链接。无需在客户端提供凭据。SigV4RequestSigner在文档中找到它:这是一个有用的类,可在 NodeJS 后端中使用,用于对请求进行签名并将其发送回客户端,以便客户端不需要具有 AWS 凭证。

茅侃侃

创建信令客户端时,您可以指定凭据或返回 的请求签名者,请参阅:Promise<string>https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-js/blob/master/README.md#class-signalingclientcredentials&nbsp;{object}&nbsp;Must&nbsp;be&nbsp;provided&nbsp;unless&nbsp;a&nbsp;requestSigner&nbsp;is&nbsp;provided.请注意,如果不在浏览器中使用凭据,则还需要在服务器端运行相关代码,因为此类不支持请求签名者。KinesisVideoSignalingChannels

12345678_0001

对于 Kinesis,其中一种可能性是在 NodeJS 后端中实现一个用于对 URL 进行签名的函数。const endpointsByProtocol = getSignalingChannelEndpointResponse.ResourceEndpointList.reduce((endpoints, endpoint) => {&nbsp; &nbsp; endpoints[endpoint.Protocol] = endpoint.ResourceEndpoint;&nbsp; &nbsp; return endpoints;}, {});console.log('[VIEWER] Endpoints: ', endpointsByProtocol);const region = "us-west-2";const credentials = {&nbsp; &nbsp; accessKeyId: "XAXAXAXAXAX",&nbsp; &nbsp; secretAccessKey: "SECRETSECRET"};const queryParams = {&nbsp; &nbsp; 'X-Amz-ChannelARN': channelARN,&nbsp; &nbsp; 'X-Amz-ClientId': formValues.clientId}const signer = new SigV4RequestSigner(region, credentials);const url = await signer.getSignedURL(endpointsByProtocol.WSS, queryParams);console.log(url);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript