Javascript 如何在不提供凭据的情况下在浏览器中使用Kinesis视频流WebRTC SDK?
我想使用kinesis视频流webrtc javascript sdk从网页生成视频流。 说我需要提供accessKeyId和secrectAccessKey 有没有一种方法可以使它更安全,并避免在javascript代码中提供秘密访问密钥? 这难道不意味着任何查看我的网页源的人都可以从网页获取这些凭据并使用它们访问信号通道吗?Javascript 如何在不提供凭据的情况下在浏览器中使用Kinesis视频流WebRTC SDK?,javascript,video-streaming,amazon-iam,amazon-kinesis,Javascript,Video Streaming,Amazon Iam,Amazon Kinesis,我想使用kinesis视频流webrtc javascript sdk从网页生成视频流。 说我需要提供accessKeyId和secrectAccessKey 有没有一种方法可以使它更安全,并避免在javascript代码中提供秘密访问密钥? 这难道不意味着任何查看我的网页源的人都可以从网页获取这些凭据并使用它们访问信号通道吗? 我可以使用amplify js Auth类将信令客户端与经过身份验证的用户一起使用吗?事实证明,我可以在后端使用凭据,并使用类SIGV4 RequestSigner向客
我可以使用amplify js Auth类将信令客户端与经过身份验证的用户一起使用吗?事实证明,我可以在后端使用凭据,并使用类SIGV4 RequestSigner向客户端发送预签名的链接。 不需要在客户端提供凭据 我在房间里找到的 这是一个有用的类,可在NodeJS后端中用于对请求进行签名并将其发送回客户端,以便客户端不需要AWS凭据
事实证明,我可以在后端使用凭据,并使用类SigV4RequestSigner向客户端发送一个预签名的链接。 不需要在客户端提供凭据 我在房间里找到的 这是一个有用的类,可在NodeJS后端中用于对请求进行签名并将其发送回客户端,以便客户端不需要AWS凭据
创建SignalingClient时,您可以指定凭据或返回承诺的请求签名者,请参阅:
请注意,在浏览器中不使用凭据时,您还需要在服务器端运行与KinesisVideoSignalingChannel相关的代码,因为此类不支持请求签名者。创建SignalingClient时,您可以指定凭据或返回承诺的请求签名者,请参阅:
请注意,当不在浏览器中使用凭据时,您还需要在服务器端运行与KinesisVideoSignalingChannel相关的代码,因为此类不支持请求签名者。对于Kinesis,一种可能是在NodeJS后端实现一个对URL进行签名的功能
const endpointsByProtocol = getSignalingChannelEndpointResponse.ResourceEndpointList.reduce((endpoints, endpoint) => {
endpoints[endpoint.Protocol] = endpoint.ResourceEndpoint;
return endpoints;
}, {});
console.log('[VIEWER] Endpoints: ', endpointsByProtocol);
const region = "us-west-2";
const credentials = {
accessKeyId: "XAXAXAXAXAX",
secretAccessKey: "SECRETSECRET"
};
const queryParams = {
'X-Amz-ChannelARN': channelARN,
'X-Amz-ClientId': formValues.clientId
}
const signer = new SigV4RequestSigner(region, credentials);
const url = await signer.getSignedURL(endpointsByProtocol.WSS, queryParams);
console.log(url);
对于Kinesis,其中一个可能性是在NodeJS后端实现一个对URL进行签名的函数
const endpointsByProtocol = getSignalingChannelEndpointResponse.ResourceEndpointList.reduce((endpoints, endpoint) => {
endpoints[endpoint.Protocol] = endpoint.ResourceEndpoint;
return endpoints;
}, {});
console.log('[VIEWER] Endpoints: ', endpointsByProtocol);
const region = "us-west-2";
const credentials = {
accessKeyId: "XAXAXAXAXAX",
secretAccessKey: "SECRETSECRET"
};
const queryParams = {
'X-Amz-ChannelARN': channelARN,
'X-Amz-ClientId': formValues.clientId
}
const signer = new SigV4RequestSigner(region, credentials);
const url = await signer.getSignedURL(endpointsByProtocol.WSS, queryParams);
console.log(url);
我很难找到一个可以使用的例子。是否有任何代码可以说明这是如何工作的?是的,请提供示例我很难找到可以使用的示例。是否有任何代码可以说明这是如何工作的?是的,请提供示例。你有关于完全函数性的示例吗?你有关于完全函数性的示例吗?
const endpointsByProtocol = getSignalingChannelEndpointResponse.ResourceEndpointList.reduce((endpoints, endpoint) => {
endpoints[endpoint.Protocol] = endpoint.ResourceEndpoint;
return endpoints;
}, {});
console.log('[VIEWER] Endpoints: ', endpointsByProtocol);
const region = "us-west-2";
const credentials = {
accessKeyId: "XAXAXAXAXAX",
secretAccessKey: "SECRETSECRET"
};
const queryParams = {
'X-Amz-ChannelARN': channelARN,
'X-Amz-ClientId': formValues.clientId
}
const signer = new SigV4RequestSigner(region, credentials);
const url = await signer.getSignedURL(endpointsByProtocol.WSS, queryParams);
console.log(url);