身份认证

在两个 WebRTC 浏览器之间执行的 DTLS 握手依赖于自签名证书。 因此,由于没有明确的信任链,因此此类证书不能用于对等体进行身份验证。

W3C WebRTC 工作组实际上正在研究基于 Web 的身份提供程序(IdP)机制。 想法是,每个浏览器都与支持协议(例如,OpenId 或 BrowserID )的 IdP 有关系,该协议可用于在与其他对等方进行交互时声明其自身的身份。 与 IdP 的交互的设计方式是使浏览器与任何特定的身份提供者脱钩(即,参与通信的每个浏览器可能与不同的 IdP 有关系)。

::: warning 注意

setIdentityProvider() 方法设置用于给定 PeerConnection 对象的身份提供者。 如果已经为特定的 IdP 配置了浏览器,则应用程序无需调用此调用。在这种情况下,已配置的 IdP 将用于获取断言。

:::

发送 Offer 的浏览器充当身份验证方(AP),并从 IdP 获得将其身份绑定到自己的指纹(在 DTLS 握手期间生成)的身份声明。 然后将此身份声明附加到要约。

::: warning 注意

getIdentityProvider() 方法启动获取身份声明的过程。 应用程序不需要调用此调用; 该方法仅旨在允许他们在发起呼叫之前开始获取身份声明的过程。

:::

在 Offer/Answer 交换阶段中扮演消费者角色的浏览器(例如,具有 RTCPeerConnection 的浏览器被调用 setRemoteDescription() 的浏览器)充当依赖方(RP),并通过直接联系 IdP 的 IdP 来验证断言 发送 Offer 的浏览器(图6-1)。 使用 Chrome 浏览器时,这使用户可以显示受信任的图标,指示正在从受信任的联系人来的呼叫。

图6-1

图6-1 具有基于 IdP 身份的 WebRTC 呼叫