📄 login.html
字号:
<html>
<head>
<title>Detailed OSCAR login sequence description</title>
<style type="text/css">
body {background-color: white; font-size: 13px;}
td {font-size: 16px;}
</style>
</head>
<body bgcolor=white>
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#4040FF >
<table width=100% cellSpacing=0 cellPadding=0 border=0>
<tr>
<td><b><font color="white"> OSCAR login </font></b></td>
<td width=40% align=right><b><font color="white"> </font></b></td>
</tr>
</table>
</td></tr>
</table>
</td></tr></table>
<br>
<table width=640 cellSpacing=0 cellPadding=0 border=0 bgcolor=#E9E9E9>
<tr><td bgcolor=white>
<table width=100% cellSpacing=1 cellPadding=1 align=center border=0>
<tr>
<td bgcolor=#f0f0f0 width=120> <b>Login stage I:</b> </td>
<td bgcolor=#f0f0f0> <a href="#l0001">Authorization</a></td>
</tr>
<tr>
<td bgcolor=#f0f0f0> <b>Login stage II:</b> </td>
<td bgcolor=#f0f0f0> <a href="#l0002">Protocol negotiation </a></td>
</tr>
<tr>
<td bgcolor=#f0f0f0> <b>Login stage III:</b> </td>
<td bgcolor=#f0f0f0> <a href="#l0003">Services setup</a></td>
</tr>
<tr>
<td bgcolor=#f0f0f0> <b>Login stage IV:</b> </td>
<td bgcolor=#f0f0f0> <a href="#l0004">Final actions</a></td>
</tr>
<tr>
<td bgcolor=#f0f0f0> <b>Example #1:</b> </td>
<td bgcolor=#f0f0f0> <a href="elmd5.html">Login with MD5 based authorization</a></td>
</tr>
<tr>
<td bgcolor=#f0f0f0> <b>Example #2:</b> </td>
<td bgcolor=#f0f0f0> <a href="elch01.html">Login with channel 0x01 based authorization</a></td>
</tr>
</table>
</td></tr>
</table>
<br>
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9 >
<table width=100% cellSpacing=0 cellPadding=0 bgcolor="#4040FF" border=0>
<tr>
<td><b><font size=2 color="white"> <a name="L0001"></a>Login stage I: Authorization </font></b></td>
</tr>
</table>
</td></tr>
<tr><td bgcolor=#E9E9E9 >
<table width=100% cellSpacing=0 cellPadding=0 border=0>
<tr><td colspan=3 height=5></td></tr>
<tr><td width=5> </td>
<td>
Currently there is two ways to pass authentification in OSCAR protocol. First is
FLAP channel 0x01 authorization (password not crypted but roasted), second is MD5
based where password is MD5 crypted. In both ways server could return error or
authorization cookie + BOS address. Here is both auth sequences (client<->server):
<br><br>
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td width=20></td>
<td>
<table width=500 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#7070D0>
<b><font size=2 color=white> 1. Channel 0x01 authorization (success)</font></b></td></tr>
<tr><td bgcolor=#E5E5E5>
<table width=500 cellSpacing=1 cellPadding=1 border=0>
<tr>
<td bgcolor=#f9f9f9 width=40 valign=top> <b><></b></td>
<td bgcolor=#f9f9f9 width=110 valign=top> <b>connect</b></td>
<td bgcolor=#f9f9f9 valign=top> Client connects to authorizer server</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="cli_ident.html">cli_ident</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Client send login request</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="srv_cookie.html">srv_cookie</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Server reply via BOS address / cookie</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b><></b></td>
<td bgcolor=#f9f9f9 valign=top> <b>disconnect</b></td>
<td bgcolor=#f9f9f9 valign=top> Client disconnects from authorizer</td>
</tr>
</table>
</td></tr>
</table>
</td></tr></table>
</td></tr>
</table>
<br>
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td width=20></td>
<td>
<table width=500 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#7070D0><b><font size=2 color=white> 2. MD5 based authorization</font></b></td></tr>
<tr><td bgcolor=#E5E5E5 >
<table width=500 cellSpacing=1 cellPadding=1 border=0>
<tr>
<td bgcolor=#f9f9f9 width=40 valign=top> <b><></b></td>
<td bgcolor=#f9f9f9 width=110 valign=top> <b>connect</b></td>
<td bgcolor=#f9f9f9 valign=top> Client connects to authorizer server</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="snac_17_06.html">SNAC(17,06)</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Client sends md5-authkey request</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="snac_17_07.html">SNAC(17,07)</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Server sends md5-authkey string</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="snac_17_02.html">SNAC(17,02)</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Client sends authorization request</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="snac_17_03.html">SNAC(17,03)</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Server sends authorization reply</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b><></b></td>
<td bgcolor=#f9f9f9 valign=top> <b>disconnect</b></td>
<td bgcolor=#f9f9f9 valign=top> Client disconnects from authorizer</td>
</tr>
</table>
</td></tr>
</table>
</td></tr></table>
</td></tr>
</table>
<br>
In channel 0x01 authorization server may replace
<a href="srv_cookie.html">srv_cookie</a> packet reply via
<a href="auth_failed.html">auth_failed</a> packet which contain authorization
error code. In MD5 based authorization sequence server always reply via
<a href="snac_17_03.html">SNAC(17,03)</a> which may contain cookie / BOS address
or authorization error code.<br><br>
When authorization sequence successfully finishes client has authorization cookie,
ip address and port of the BOS server. At this point it should disconnect from
authorizer and connect to BOS. This is the point where login stage II (protocol
negotiation) started.<br><br>
</td>
<td width=15></td></tr>
</table>
</td></tr>
</table>
</td></tr></table>
<br>
<table width=640 cellSpacing=0 cellPadding=0 border=0>
<tr>
<td>
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9>
<table width=100% cellSpacing=0 cellPadding=0 bgcolor="#4040FF" border=0>
<tr>
<td><b><font size=2 color="white"> <a name="L0002"></a>Login stage II: Protocol negotiation </font></b></td>
</tr>
</table>
</td></tr>
<tr><td bgcolor=#E9E9E9>
<table width=100% cellSpacing=0 cellPadding=0 border=0>
<tr><td colspan=3 height=5></td></tr>
<tr><td width=5> </td>
<td>
After authorization client should extract BOS server/auth cookie from reply
packet, connect to BOS and send cookie via special FLAP channel 0x01
packet named <a href="cli_cookie.html">cli_cookie</a>. In reply server will return list of
supported services - <a href="snac_01_03.html">SNAC(01,03)</a>. Then client
should ask needed services version numbers using
<a href="snac_01_17.html">SNAC(01,17)</a>. After that client will receive services
version numbers server has - <a href="snac_01_18.html">SNAC(01,18)</a>. Note that
client never shouldn't send snacs to services not listed in SNAC(01,03). It should
use service request <a href="snac_01_04.html">SNAC(01,04)</a> instead.<br><br>
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td width=20></td>
<td>
<table width=500 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#7070D0><b><font size=2 color=white> Protocol negotiation</font></b></td></tr>
<tr><td bgcolor=#E5E5E5 >
<table width=500 cellSpacing=1 cellPadding=1 border=0>
<tr>
<td bgcolor=#f9f9f9 width=40 valign=top> <b><></b></td>
<td bgcolor=#f9f9f9 width=110 valign=top> <b>connect</b></td>
<td bgcolor=#f9f9f9 valign=top> Client connects to BOS server</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="cli_cookie.html">cli_cookie</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Client sends cookie</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="snac_01_03.html">SNAC(01,03)</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Server sends supported services list</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="snac_01_17.html">SNAC(01,17)</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Client ask for services version numbers</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td>
<td bgcolor=#f9f9f9 valign=top> <b><a href="snac_01_18.html">SNAC(01,18)</a></b></td>
<td bgcolor=#f9f9f9 valign=top> Server sends its services version numbers</td>
</tr>
</table>
</td></tr>
</table>
</td></tr></table>
</td></tr>
</table>
<br>
After negotiation client should setup current connection. It request
rate limitations information via <a href="snac_01_06.html">SNAC(01,06)</a>.
Then server will return connection rate limitations info -
<a href="snac_01_07.html">SNAC(01,07)</a>. At this point client start calculating
its rate level on every SNAC it send. Server rate limitations information SNAC
should be acked using <a href="snac_01_08.html">SNAC(01,08)</a>. Now connection
ready.<br><br>
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td width=20></td>
<td>
<table width=500 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#7070D0><b><font size=2 color=white> Protocol negotiation</font></b></td></tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -