zdpjs_webrtc
Version:
基于easyrtc二次开发的webrtc框架
129 lines (108 loc) • 9.21 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>EasyRTC Documentation</title>
<link href="assets/easyrtc-docs-styles-1.css" media="all" rel="stylesheet" />
</head>
<body>
<header class="template">
<div class="wrapper-content">
<a href="./index.html"><img src="assets/easyrtc-logo.png" alt="EasyRTC Documentation"></a>
<h1 title="EasyRTC Documentation">Documentation</h1>
</div>
</header>
<div class="wrapper-docs">
<nav>
<h2><a href="./index.html">Docs Home</a></h2>
<h3>EasyRTC Guides</h3>
<ul>
<li><a href="easyrtc_faq.html">FAQ</a></li>
<li><a href="easyrtc_gettingStarted.html">Getting Started</a></li>
<li><a href="easyrtc_server_install.html">EasyRTC Server: Installation</a></li>
<li><a href="easyrtc_client_tutorial.html">EasyRTC Framework Tutorial</a></li>
<li><a href="easyrtc_rooms.html">Rooms</a></li>
<li><a href="easyrtc_server_configuration.html">EasyRTC Server: Configuration</a></li>
<li><a href="easyrtc_server_events.html">EasyRTC Server: Events</a></li>
<li><a href="easyrtc_server_ice.html">EasyRTC Server: ICE Configuration</a></li>
<li><a href="easyrtc_with_other_servers.html">Using Alongside Other Servers</a></li>
<li><a href="easyrtc_server_ssl.html">EasyRTC Server: Using SSL</a></li>
<li><a href="easyrtc_webrtc_problems.html">WebRTC Problems and Possible Fixes</a></li>
<li><a href="easyrtc_upcoming_features.html">Upcoming Features</a></li>
<li><a href="easyrtc_changelog.html">Change Log</a></li>
</ul>
<h3>EasyRTC Client Classes</h3>
<ul>
<li><a href="client-api/Easyrtc.html">Easyrtc</a></li>
<li><a href="client-api/Easyrtc_App.html">Easyrtc_App</a></li>
<li><a href="client-api/Easyrtc_ft.html">Easyrtc_ft</a></li>
<li><a href="client-api/Easyrtc_IframeCapture.html">Easyrtc_IframeCapture</a></li>
<li><a href="client-api/Easyrtc_No_IframeCapture.html">Easyrtc_No_IframeCapture</a></li>
<li><a href="client-api/Easyrtc_Rates.html">Easyrtc_Rates</a></li>
<li><a href="client-api/Easyrtc_Recorder.html">Easyrtc_Recorder</a></li>
</ul>
<h3>EasyRTC Server Modules</h3>
<ul>
<li><a href="server-api/module-easyrtc_default_event_listeners.html">easyrtc_default_event_listeners</a></li>
<li><a href="server-api/module-easyrtc_default_options.html">easyrtc_default_options</a></li>
<li><a href="server-api/module-easyrtc_private_obj.html">easyrtc_private_obj</a></li>
<li><a href="server-api/module-easyrtc_public_obj.html">easyrtc_public_obj</a></li>
<li><a href="server-api/module-easyrtc_util.html">easyrtc_util</a></li>
<li><a href="server-api/module-general_util.html">general_util</a></li>
</ul>
<h3>EasyRTC Server Classes</h3>
<ul>
<li><a href="server-api/module-easyrtc_default_event_listeners-eventListener.html">eventListener</a></li>
<li><a href="server-api/module-easyrtc_public_obj-pub.html">pub</a></li>
<li><a href="server-api/module-easyrtc_public_obj-pub.events.html">events</a></li>
<li><a href="server-api/module-easyrtc_public_obj-pub.util.html">util</a></li>
<li><a href="server-api/module-easyrtc_util-eu.html">eu</a></li>
<li><a href="server-api/module-general_util-g.html">g</a></li>
<li><a href="server-api/pub.appObj.html">appObj</a></li>
<li><a href="server-api/pub.appObj.connectionObj.html">connectionObj</a></li>
<li><a href="server-api/pub.appObj.connectionObj.connectionRoomObj.html">connectionRoomObj</a></li>
<li><a href="server-api/pub.appObj.roomObj.html">roomObj</a></li>
<li><a href="server-api/pub.appObj.sessionObj.html">sessionObj</a></li>
</ul>
</nav>
<div class="easyrtc-docs-content">
<h1>EasyRTC: Authentication</h1>
<p>By default EasyRTC allows all connections, however it can be locked down to work against a variety of authentication methods. Most commonly this is done by sending a username and credential upon connecting to the server.</p>
<p>Even if authentication is not needed, setting the username can be used to create a visible alternative to the easyrtcid.</p>
<h2>Setting Username and Credential in JS Client</h2>
<p><strong>easyrtc.setUsername()</strong></p>
<ul><li>Use before connecting to the server via <code>easyrtc.connect()</code> or <code>easyrtc.easyApp()</code></li><li>Shared to other connections in the same room<ul><li>Can be used for setting a visible name (instead of easyrtcid)</li><li>To avoid sharing username, embed it inside the credential via <code>easyrtc.setCredential()</code></li></ul></li><li>Restricted by regular expression<ul><li>Default is to allow up to 64 of any characters. </li><li>In client JS, set <code>easyrtc.usernameRegExp</code></li><li>In server, set option <code>usernameRegExp</code></li></ul></li><li>Usernames should not be considered unique to a connection. One user could have multiple connections open. </li><li><p>Value is sent to the server "authenticate" event listener </p><p>easyrtc.setUsername("handsomeJack");</p></li></ul>
<p><strong>easyrtc.setCredential()</strong></p>
<ul><li>Use before connecting to the server via <code>easyrtc.connect()</code> or <code>easyrtc.easyApp()</code></li><li>Can contain any JSONable object</li><li><p>Value is sent to the server "authenticate" event listener </p><p>easyrtc.setCredential({
"password":"345RTC!",
"realm":"easyrtc.com",
"apikey":"d834kds81vs189s10kkd4"
});</p></li></ul>
<h2>Checking Authentication On Server</h2>
<p><strong>Using "authenticate" Event Listener</strong></p>
<p>The "authenticate" event is fired during the initial connection. The listener is provided with full details about the connection, so it may decide whether to authenticate or disconnect them.</p>
<p>In this simplistic example, any clients connecting to the adminSite application will be denied unless they have a username of "handsomeJack". Any clients connecting to any other application will be let through.</p>
<pre><code>var onAuthenticate = function(socket, easyrtcid, appName, username, credential, easyrtcAuthMessage, next){
if (appName == "adminSite" && username != "handsomeJack"){
next(new easyrtc.util.ConnectionError("Failed our private auth."));
}
else {
next(null);
}
};
easyrtc.events.on("authenticate", onAuthenticate);</code></pre>
<p><strong>Listener Parameters:</strong></p>
<ul><li><strong>socket</strong><ul><li>Socket.io object for the specific socket connection </li><li>The IP Address of the connection is available from <code>socket.handshake.address.address</code></li><li>If using a proxy, the IP may be available from <code>socket.handshake.headers['x-forwarded-for']</code></li><li>Referer <em>may</em> be available from <code>socket.handshake.headers.referer</code></li><li>The socket can be disconnected using <code>socket.disconnect()</code> however it is recommended to call next() with an error</li></ul></li><li><strong>easyrtcid</strong><ul><li>A unique identifier given to this connection</li></ul></li><li><strong>appName</strong><ul><li>The requested EasyRTC application. Useful for application specific authentication.</li></ul></li><li><strong>username</strong><ul><li>Shared to other connections in the same room<ul><li>Can be used for setting a visible name (instead of easyrtcid)</li><li>To avoid sharing username, embed it inside the credential via <code>easyrtc.setCredential()</code></li></ul></li><li>Restricted by regular expression<ul><li>Default is to allow up to 64 of any characters. </li><li>In client JS, set <code>easyrtc.usernameRegExp</code></li><li>In server, set option <code>usernameRegExp</code></li></ul></li></ul></li><li><strong>credential</strong><ul><li>Depending on authentication method, may be used for storing passwords, realms, hashes, apikeys, etc. </li><li>Can be any JSONable object</li><li>Type checking should be performed </li></ul></li><li><strong>easyrtcAuthMessage</strong><ul><li>Includes the complete authentication message sent by the client</li><li>May be used to deny authentication based on requested rooms, api fields, etc. </li></ul></li><li><strong>next</strong><ul><li>A callback function which should be called once (and only once)</li><li>If client should be authenticated, call with a null parameter<ul><li><code>next(null);</code></li></ul></li><li>If client should not be authenticated, call with an Error for the parameter<ul><li><code>next(new easyrtc.util.ConnectionError("Failed our private auth."));</code> </li></ul></li></ul></li></ul>
<p>For more information about EasyRTC server events, see <a href="easyrtc_server_events.md">easyrtc<em>server</em>events.md</a></p>
<h2>If You Run Into Problems</h2>
<p>Please feel free to post on our discussion forum:</p>
<ul><li><a href="https://groups.google.com/forum/?fromgroups#!forum/easyrtc">https://groups.google.com/forum/?fromgroups#!forum/easyrtc</a></li></ul>
</div>
</div>
<footer class="template">
<div class="wrapper-content">
<p>Copyright ©2016 EasyRTC</p>
</div>
</footer>
</body>
</html>