Protocols/OSCAR/Sign On: Difference between revisions
(22 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
== Stage 1: Initial Authorization == | == Stage 1: Initial Authorization == | ||
Over the years, the NINA/ICQ/AIM backend has supported several different methods for authentication. Until the NINA project began taking over the responsibility for the OSCAR protocol, the only publicly supported login method was clientLogin | Over the years, the NINA/ICQ/AIM backend has supported several different methods for authentication. Until the NINA project began taking over the responsibility for the OSCAR protocol, the only publicly supported login method was clientLogin. | ||
We actually support ''all'' authentication methods, even legacy ones, in order to support the full range of clients. Due to complexity and level of detail, each method had been separated into sub-articles. | |||
This | ;[[Protocols/OSCAR/Sign_On/FLAP|FLAP]] | ||
: This is the oldest method of sign on, used prior to AIM 3.5. It is not to be confused with the FLAP-level sign on for BOSS and other services. | |||
;[[Protocols/OSCAR/Sign_On/BUCP|BUCP]] | |||
: This method is used from AIM 3.5 to AIM 5.9, for ICQ, and can be wrapped in TLS. | |||
;[[Protocols/OSCAR/Sign_On/UAS|UAS]] | |||
: Kerberos-based authentication is used in AIM 6+. | |||
;[[Protocols/OSCAR/Sign_On/clientLogin|clientLogin]] | |||
: This web-based login can be used by both OSCAR clients and [[Protocols/WebAPI|WebAPI]] clients. | |||
== Stage 2: Connecting to BOSS == | |||
Connect to the host and port (optionally over TLS) provided in the previous step, regardless of the method it was obtained. | |||
=== Step #1 - Send FLAP SIGNON Frame === | |||
Once connected, the client should send a [[Protocols/OSCAR/FLAP#FLAP_FRAME_SIGNON|FLAP__FRAME_SIGNON]] with the login cookie and any version information it would like to provide. | |||
{| class="wikitable" | |||
! Field | |||
! Size | |||
! Value | |||
|- | |||
| u08 | |||
| flapHeader.startMarker | |||
| '*' | |||
|- | |||
| u08 | |||
| flapHeader.frameType | |||
| 0x01 ([[Protocols/OSCAR/FLAP#Class:_FLAP_FRAME|FLAP__FRAME_SIGNON]]) | |||
|- | |||
| u16 | |||
| flapHeader.sequenceNumber | |||
| XX | |||
|- | |||
| u16 | |||
| flapHeader.payloadLength | |||
| YY | |||
|- | |||
| u32 | |||
| version | |||
| 0x01 | |||
|- | |||
| u16 | |||
| tlvs[0].tag | |||
| 0x06 ([[Protocols/OSCAR/Sign_On#TLV_Class:_FLAP_SIGNON_TAGS|FLAP__SIGNON_TAGS_LOGIN_COOKIE]]) | |||
|- | |||
| u16 | |||
| tlvs[0].len | |||
| 0x100 | |||
|- | |||
| blob | |||
| tlvs[0].value | |||
| base64 decoded $cookie value from Step #2 | |||
|- | |||
| u16 | |||
| tlvs[1].tag | |||
| 0x4A ([[Protocols/OSCAR/Sign_On#Class:_OSERVICE_MULTICONN_FLAGS|OSERVICE__MULTICONN_FLAGS]]) | |||
|- | |||
| u16 | |||
| tlvs[1].len | |||
| 0x01 | |||
|- | |||
| u08 | |||
| tlvs[1].value | |||
| 0x01 | |||
|} | |||
# It should then listen for a [[Protocols/OSCAR/FLAP#FLAP_FRAME_SIGNON|FLAP__FRAME_SIGNON]] from BOSS before continuing. | |||
# Once it has received the [[Protocols/OSCAR/FLAP#FLAP_FRAME_SIGNON|FLAP__FRAME_SIGNON]], the client can start sending SNAC messages to the server. | |||
==== From Aleksandr Shutko: CLI_COOKIE: server BOS login request ==== | |||
<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">CLI_COOKIE </font></b></td> | |||
<td width=70% align=right><b><font color="white"> </font></b></td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br> | |||
Client use this to login to BOS server. This packet contain cookie, received during | |||
authorization. Client should send it to FLAP channel 0x01. See also | |||
[[Protocols/OSCAR/Sign_On|login sequence]] info. | |||
<br><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=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20></td> | |||
<td width=130> 00 00 00 01</td> | |||
<td>dword</td> | |||
<td width=58%>protocol version number</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> 00 06</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x06) - authorization cookie</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> xx ..</td> | |||
<td width=5> </td> | |||
<td>array</td> | |||
<td width=5> </td> | |||
<td width=60%>authorization cookie</td> | |||
</tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr><tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x?? --> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0 > | |||
<tr><td>may contain other tlv from the [[Protocols/OSCAR/TLV#Common_TLVs|following list]] (+).</td></tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br>Example SNAC dump with flap header: | |||
<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> | |||
<font size=3><pre style="font-size: 13px"> | |||
2A 01 10 1F 01 08 00 00 00 01 00 06 01 00 37 37 *.............77 | |||
37 37 37 37 3F 29 44 42 7B 43 31 34 65 32 44 61 7777?)DB.C14e2Da | |||
31 44 42 66 65 34 42 30 32 30 30 44 61 44 44 39 1DBfe4B0200DaDD9 | |||
42 35 63 32 35 42 63 33 30 64 44 61 32 66 33 66 B5c25Bc30dDa2f3f | |||
38 63 36 32 65 35 63 7C 65 38 40 41 41 41 41 41 8c62e5c.e8@AAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA | |||
41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAA | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
== Stage 3: Going Online == | |||
Once the connection has been established and the FLAP signon frames have been exchanged, the client can start sending SNACs to the server. | |||
=== Step 1: Rights Requests === | |||
Usually the first thing the client sends are all the rights queries and a [[Protocols/OSCAR/SNAC/FEEDBAG__QUERY|FEEDBAG__QUERY]] SNAC. It can and should send all these requests in parallel for a quicker login experience. | |||
# Client queries the BUDDY foodgroup for rights: [[Protocols/OSCAR/SNAC/BUDDY__RIGHTS_QUERY|BUDDY__RIGHTS_QUERY]] | |||
# Query the PD foodgroup rights: [[Protocols/OSCAR/SNAC/PD_RIGHTS_QUERY|PD_RIGHTS_QUERY]] | |||
# Query the LOCATE foodgroup rights: [[Protocols/OSCAR/SNAC/LOCATE_RIGHTS_QUERY|LOCATE_RIGHTS_QUERY]] | |||
# Query the FEEDBAG foodgroup rights: [[Protocols/OSCAR/SNAC/FEEDBAG_RIGHTS_QUERY|FEEDBAG_RIGHTS_QUERY]] | |||
# Query what the Buddy List and preferences are: [[Protocols/OSCAR/SNAC/FEEDBAG_QUERY|FEEDBAG_QUERY]] | |||
=== Step 2: FEEDBAG Use and Client Online === | |||
Once all the rights replies and feedbag replies are received, it is time to tell the server that the client is ready to proceed. | |||
# First tell the server that the feedbag looks OK and the client is ready to use it: [[Protocols/OSCAR/SNAC/FEEDBAG_USE|FEEDBAG_USE]] | |||
# Next we tell the client we are ready to appear online to everyone else and our version numbers: [[Protocols/OSCAR/SNAC/OSERVICE_CLIENT_ONLINE|OSERVICE_CLIENT_ONLINE]] | |||
=== Step 3: Online === | |||
The client is now considered online, visible to other users, and will start to receive [[Protocols/OSCAR/SNAC/BUDDY__ARRIVED|BUDDY__ARRIVED]] for any online buddies. | |||
Next steps: | Next steps: | ||
* [[Protocols/OSCAR/ | * [[Protocols/OSCAR/Services/BART/Tutorials#Getting_a_User.27s_Buddy_Icon|Getting a User's Buddy Icon]] | ||
* [[Protocols/OSCAR/Foodgroups/ICBM/Tutorials#Sending_Typing_Event|Sending]] and [[Protocols/OSCAR/Foodgroups/ICBM/Tutorials#Receiving_Typing_Event|Receiving]] typing events. | |||
* [[Protocols/OSCAR/Foodgroups/ICBM/Tutorials#Sending_IM|Sending]] and [[Protocols/OSCAR/Foodgroups/ICBM/Tutorials#Receiving_IM|Receiving]] IMs. | |||
* [[Protocols/OSCAR/Foodgroups/LOCATE/Tutorials#Getting_a_User.27s_Buddy_Info|Getting a User's Buddy Info]] | |||
==== From Aleksandr Shutko: Detailed OSCAR login sequence description ==== | |||
<table width=160 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=160 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td><b><font color="white" size=2> Login sequence </font></b></td> | |||
<td width=5% align=right><b><font color="white"> </font></b></td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
<br> | |||
<table width=160 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E5E5E5 > | |||
<table width=160 cellSpacing=1 cellPadding=1 border=0> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=20 valign=top><font size=2> <b><></b></font></td> | |||
<td bgcolor=#f9f9f9 width=110 valign=top><font size=2> <b>Auth connect</b></font></td> | |||
</tr> | |||
=== | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/Sign_On/FLAP|cli_ident]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/Sign_On/FLAP#FLAP_FRAME_SIGNOFF|srv_cookie]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>Auth disconnect</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>BOS connect</b></font></td> | |||
</tr> | |||
==== | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/Sign_On#Stage_2:_Connecting_to_BOSS|cli_cookie]]</b></font></td> | |||
</tr> | |||
<tr> | |||
< | <td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_03|SNAC(01,03)]]</b></font></td> | |||
< | </tr> | ||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
; & | <td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_17|SNAC(01,17)]]</b></font></td> | ||
</tr> | |||
; & | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_18|SNAC(01,18)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
< | <td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_06|SNAC(01,06)]]</b></font></td> | |||
</ | </tr> | ||
< | |||
</ | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_07|SNAC(01,07)]]</b></font></td> | |||
</tr> | |||
< | <tr> | ||
< | <td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_08|SNAC(01,08)]]</b></font></td> | |||
</tr> | |||
</ | |||
</ | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_02|SNAC(13,02)]]</b></font></td> | |||
</tr> | |||
==== | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_05|SNAC(13,05)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_02_02|SNAC(02,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_03_02|SNAC(03,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
< | <td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_04_04|SNAC(04,04)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_09_02|SNAC(09,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_02_03|SNAC(02,03)]]</b></font></td> | |||
</tr> | |||
< | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_03_03|SNAC(03,03)]]</b></font></td> | |||
</ | </tr> | ||
==== | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_04_05|SNAC(04,05)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_09_03|SNAC(09,03)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_03|SNAC(13,03)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
; & | <td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_0F|SNAC(13,0F)]]</b></font></td> | ||
</tr> | |||
; & | |||
< | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_07|SNAC(13,07)]]</b></font></td> | |||
</tr> | |||
</ | |||
==== | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_02_04|SNAC(02,04)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_04_02|SNAC(04,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_1E|SNAC(01,1E)]]</b></font></td> | |||
</tr> | |||
== | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_02|SNAC(01,02)]]</b></font></td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
==== From Aleksandr Shutko: Detailed OSCAR login sequence description ==== | |||
<table width=160 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=160 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td><b><font color="white" size=2> Login sequence </font></b></td> | |||
<td width=5% align=right><b><font color="white"> </font></b></td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
<br> | |||
<table width=160 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E5E5E5 > | |||
<table width=160 cellSpacing=1 cellPadding=1 border=0> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=20 valign=top><font size=2> <b><></b></font></td> | |||
<td bgcolor=#f9f9f9 width=110 valign=top><font size=2> <b>Auth connect</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_17_06|SNAC(17,06)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_17_07|SNAC(17,07)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_17_02|SNAC(17,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_17_03|SNAC(17,03)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>Auth disconnect</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>BOS connect</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/Sign_On#Stage_2:_Connecting_to_BOSS|cli_cookie]]</b></font></td> | |||
</tr> | |||
OSCAR | <tr> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_03|SNAC(01,03)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_17|SNAC(01,17)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_18|SNAC(01,18)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_06|SNAC(01,06)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_07|SNAC(01,07)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_08|SNAC(01,08)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_02|SNAC(13,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_05|SNAC(13,05)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_02_02|SNAC(02,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_03_02|SNAC(03,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
</ | <td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_04_04|SNAC(04,04)]]</b></font></td> | |||
</tr> | |||
< | <tr> | ||
[ | <td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_09_02|SNAC(09,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_02_03|SNAC(02,03)]]</b></font></td> | |||
</ | </tr> | ||
< | <tr> | ||
[ | <td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_03_03|SNAC(03,03)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_04_05|SNAC(04,05)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_09_03|SNAC(09,03)]]</b></font></td> | |||
</tr> | |||
</ | |||
< | <tr> | ||
[ | <td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_03|SNAC(13,03)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b><<</b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_0F|SNAC(13,0F)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_13_07|SNAC(13,07)]]</b></font></td> | |||
</tr> | |||
</ | |||
< | <tr> | ||
[ | <td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | ||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_02_04|SNAC(02,04)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_04_02|SNAC(04,02)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_1E|SNAC(01,1E)]]</b></font></td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>>></b></font></td> | |||
<td bgcolor=#f9f9f9 valign=top><font size=2> <b>[[Protocols/OSCAR/SNAC_01_02|SNAC(01,02)]]</b></font></td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</ | |||
[[Category:With_Contrib]] | |||
== FLAP Login Sign On Errors (Temp) == | == FLAP Login Sign On Errors (Temp) == | ||
Line 368: | Line 671: | ||
| SN/Pasword Mismatch (Invalid Password) | | SN/Pasword Mismatch (Invalid Password) | ||
|} | |} | ||
=== From Aleksandr Shutko: AUTH_FAILED: server authorization failed response === | |||
<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">AUTH_FAILED </font></b></td> | |||
<td width=70% align=right><b><font color="white"> </font></b></td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br> | |||
This is the server error reply for for [[Protocols/OSCAR/Sign_On/FLAP|cli_ident]] | |||
packet. It contain authorization error code (see list bellow). It always come from | |||
FLAP channel 0x04. See also channel 0x01 authorization | |||
[[Protocols/OSCAR/Sign_On|sequence]] info. Here is known authorization error codes | |||
list:<br><br> | |||
<table width=100% bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E5E5E5> | |||
<table width=100% cellSpacing=1 cellPadding=1 border=0> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0001</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Invalid nick or password</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0002</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Service temporarily unavailable</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0003</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > All other errors</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0004</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Incorrect nick or password, re-enter</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0005</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Mismatch nick or password, re-enter</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0006</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Internal client error (bad input to authorizer)</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0007</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Invalid account</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0008</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Deleted account</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0009</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Expired account</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x000A</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > No access to database</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x000B</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > No access to resolver</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x000C</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Invalid database fields</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x000D</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Bad database status</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x000E</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Bad resolver status</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x000F</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Internal error</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0010</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Service temporarily offline</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0011</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Suspended account</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0012</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > DB send error</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0013</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > DB link error</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0014</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Reservation map error</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0015</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Reservation link error</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0016</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> The users num connected from this IP has reached the maximum</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0017</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > The users num connected from this IP has reached the maximum (reservation)</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0018</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Rate limit exceeded (reservation). Please try to reconnect in a few minutes</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0019</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > User too heavily warned</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x001A</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > Reservation timeout</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x001B</b></td> | |||
<td bgcolor=#f9f9f9 valign=top > You are using an older version of ICQ. Upgrade required</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x001C</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> You are using an older version of ICQ. Upgrade recommended</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x001D</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Rate limit exceeded. Please try to reconnect in a few minutes</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x001E</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Can't register on the ICQ network. Reconnect in a few minutes</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0020</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Invalid SecurID</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=70 valign=top> <b>0x0022</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Account suspended because of your age (age < 13)</td> | |||
</tr> | |||
</table> | |||
</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=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> 00 01</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x01) - screen name (uin)</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> xx ..</td> | |||
<td width=5> </td> | |||
<td>string</td> | |||
<td width=5> </td> | |||
<td width=60%>Screen name (uin)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x04) - error page description url</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> xx ..</td> | |||
<td width=5> </td> | |||
<td>string (ascii)</td> | |||
<td width=5> </td> | |||
<td width=60%>error description page url string</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> 00 08</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x08) - authorization error</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>Authorization error code (see above)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> 00 0C</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0C) - unknown</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>unknown field</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x?? --> | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=610 cellSpacing=0 cellPadding=0 align=center border=0 > | |||
<tr><td> May contain other tlv from the [[Protocols/OSCAR/TLV#Common_TLVs|following list]]</td></tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br>Example SNAC dump with flap header: | |||
<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> | |||
<font size=3><pre style="font-size: 13px"> | |||
2A 04 C3 2C 00 16 00 01 00 06 37 37 37 37 37 37 *..,......777777 | |||
00 08 00 02 00 05 00 0C 00 02 00 01 ............ | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
== TLV Class: FLAP__SIGNON_TAGS == | == TLV Class: FLAP__SIGNON_TAGS == | ||
Line 443: | Line 1,142: | ||
| This is a recent client that understands multiple instances but does not want them | | This is a recent client that understands multiple instances but does not want them | ||
|} | |} | ||
=== From Aleksandr Shutko: Detailed OSCAR login sequence description === | |||
<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> [[Protocols/OSCAR/Sign_On/BUCP|Login with MD5 based authorization]]</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f0f0f0> <b>Example #2:</b> </td> | |||
<td bgcolor=#f0f0f0> [[Protocols/OSCAR/Sign_On/FLAP|Login with channel 0x01 based authorization]]</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>[[Protocols/OSCAR/Sign_On/FLAP|cli_ident]]</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>[[Protocols/OSCAR/Sign_On/FLAP#FLAP_FRAME_SIGNOFF|srv_cookie]]</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>[[Protocols/OSCAR/SNAC_17_06|SNAC(17,06)]]</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>[[Protocols/OSCAR/SNAC_17_07|SNAC(17,07)]]</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>[[Protocols/OSCAR/SNAC_17_02|SNAC(17,02)]]</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>[[Protocols/OSCAR/SNAC_17_03|SNAC(17,03)]]</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 | |||
[[Protocols/OSCAR/Sign_On/FLAP#FLAP_FRAME_SIGNOFF|srv_cookie]] packet reply via | |||
[[Protocols/OSCAR/Sign_On#From_Aleksandr_Shutko:_AUTH_FAILED:_server_authorization_failed_response|auth_failed]] packet which contain authorization | |||
error code. In MD5 based authorization sequence server always reply via | |||
[[Protocols/OSCAR/SNAC_17_03|SNAC(17,03)]] 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 [[Protocols/OSCAR/Sign_On#Stage_2:_Connecting_to_BOSS|cli_cookie]]. In reply server will return list of | |||
supported services - [[Protocols/OSCAR/SNAC_01_03|SNAC(01,03)]]. Then client | |||
should ask needed services version numbers using | |||
[[Protocols/OSCAR/SNAC_01_17|SNAC(01,17)]]. After that client will receive services | |||
version numbers server has - [[Protocols/OSCAR/SNAC_01_18|SNAC(01,18)]]. Note that | |||
client never shouldn't send snacs to services not listed in SNAC(01,03). It should | |||
use service request [[Protocols/OSCAR/SNAC_01_04|SNAC(01,04)]] 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>[[Protocols/OSCAR/Sign_On#Stage_2:_Connecting_to_BOSS|cli_cookie]]</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>[[Protocols/OSCAR/SNAC_01_03|SNAC(01,03)]]</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>[[Protocols/OSCAR/SNAC_01_17|SNAC(01,17)]]</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>[[Protocols/OSCAR/SNAC_01_18|SNAC(01,18)]]</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 [[Protocols/OSCAR/SNAC_01_06|SNAC(01,06)]]. | |||
Then server will return connection rate limitations info - | |||
[[Protocols/OSCAR/SNAC_01_07|SNAC(01,07)]]. At this point client start calculating | |||
its rate level on every SNAC it send. Server rate limitations information SNAC | |||
should be acked using [[Protocols/OSCAR/SNAC_01_08|SNAC(01,08)]]. 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> | |||
<tr><td bgcolor=#E5E5E5 > | |||
<table width=500 cellSpacing=1 cellPadding=1 border=0> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_01_06|SNAC(01,06)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client ask server for rate limits info</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_01_07|SNAC(01,07)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Server sends rate limits information</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_01_08|SNAC(01,08)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client ack connection rate limits</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr> | |||
</table> | |||
<br> | |||
</td> | |||
<td width=15></td></tr> | |||
</table> | |||
</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="L0003"></a>Login stage III: Services setup </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> | |||
| |||
Most of the services has limitations which you can request via SNAC(xx,02). For | |||
example client should know max_contact_buddies for BLM service. ICBM service | |||
has message default limits and client can change them as you need. Client also | |||
should send its capabilities list to Location service. | |||
<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 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_02_02|SNAC(02,02)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client ask server location service limitations</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_02_03|SNAC(02,03)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Server replies via location service limitations</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_02_04|SNAC(02,04)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client sends its [[Protocols/OSCAR/UUIDs|capabilities]] / profile to server</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_03_02|SNAC(03,02)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client ask server BLM service limitations</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_03_03|SNAC(03,03)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Server replies via BLM service limitations</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_04_04|SNAC(04,04)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client ask server for ICBM service parameters</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_04_05|SNAC(04,05)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Server sends ICBM service parameters to client</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_04_02|SNAC(04,02)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client change default ICBM parameters command</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_09_02|SNAC(09,02)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client ask server PRM service limitations</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_09_03|SNAC(09,03)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Server sends PRM service limitations to client</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_13_02|SNAC(13,02)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client ask server for SSI service limitations</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_13_03|SNAC(13,03)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Server sends SSI service limitations to client</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_13_05|SNAC(13,05)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client check if its local SSI copy is up-to-date</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b><<</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_13_0F|SNAC(13,0F)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Server tell client its local copy up-to-date</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_13_07|SNAC(13,07)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client activates server SSI data</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr> | |||
</table> | |||
<br> | |||
| |||
Note that this order is not strict and client can send several requests and then | |||
wait for replies. But it should remember about rate limitations.<br><br> | |||
</td> | |||
<td width=15></td></tr> | |||
</table> | |||
</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="L0004"></a>Login stage IV: Final actions </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> | |||
| |||
This is last login actions you should perform. ICQ client at this stage set its | |||
DC information and status on main connection via | |||
[[Protocols/OSCAR/SNAC_01_1E|SNAC(01,1E)]]. Login sequence finishes by client ready | |||
[[Protocols/OSCAR/SNAC_01_02|SNAC(01,02)]] which contain version/build numbers for | |||
protocol dlls. | |||
<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> Final actions</font></b></td></tr> | |||
<tr><td bgcolor=#E5E5E5> | |||
<table width=500 cellSpacing=1 cellPadding=1 border=0> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_01_1E|SNAC(01,1E)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client sends its DC info and status to server</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>>></b></td> | |||
<td bgcolor=#f9f9f9 valign=top> <b>[[Protocols/OSCAR/SNAC_01_02|SNAC(01,02)]]</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> Client READY command</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr> | |||
</table> | |||
<br> | |||
| |||
After SNAC(01,02) client command server start broadcast client presence to its | |||
buddies and client start receiving messages and presence notifications. ICQ | |||
client should also [[Protocols/OSCAR/Foodgroups/ICQ/Offline_Messages_Sequence|check]] for offline | |||
messages. | |||
<br><br> | |||
</td> | |||
<td width=15></td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
[[Category:With_Contrib]] | |||
[[Category:Stub]] | [[Category:Stub]] | ||
[[Category:AOL]] | [[Category:AOL]] |
Latest revision as of 09:03, 20 February 2021
OSCAR Protocol |
Introduction • Terms • Clients |
Basic |
Datatypes • FLAP • SNAC • TLV |
UUIDs • Errors • Tool IDs |
Host Interaction |
Rate Limits • Migration • Messages |
Other Services |
ADMIN • ADVERT • ALERT |
BART • BOS • BUCP • CHAT |
CHAT_NAV |
Tutorials |
Sign On • BART • Rendezvous |
ICBM • Locate • Buddies |
Foodgroups |
OSERVICE (0x0001) |
LOCATE (0x0002) |
BUDDY (0x0003) |
ICBM (0x0004) |
ADVERT (0x0005) |
INVITE (0x0006) |
ADMIN (0x0007) |
POPUP (0x0008) |
PD (0x0009) |
USER_LOOKUP (0x000A) |
STATS (0x000B) |
TRANSLATE (0x000C) |
CHAT_NAV (0x000D) |
CHAT (0x000E) |
ODIR (0x000F) |
BART (0x0010) |
FEEDBAG (0x0013) |
ICQ (0x0015) |
BUCP (0x0017) |
ALERT (0x0018) |
PLUGIN (0x0022) |
UNNAMED_FG_24 (0x0024) |
MDIR (0x0025) |
ARS (0x044A) |
NINA clients (AIM, ICQ, et al) have several ways to authenticate and sign on to the network. While AOL may have discontinued all legacy methods, we have brought them back so that all clients and other software that may interact with the network will be fully functional.
This page provides an overview of all of the available methods, primarily from the perspective of the sequence of events and linking to pages with further information.
Stage 1: Initial Authorization
Over the years, the NINA/ICQ/AIM backend has supported several different methods for authentication. Until the NINA project began taking over the responsibility for the OSCAR protocol, the only publicly supported login method was clientLogin.
We actually support all authentication methods, even legacy ones, in order to support the full range of clients. Due to complexity and level of detail, each method had been separated into sub-articles.
- FLAP
- This is the oldest method of sign on, used prior to AIM 3.5. It is not to be confused with the FLAP-level sign on for BOSS and other services.
- BUCP
- This method is used from AIM 3.5 to AIM 5.9, for ICQ, and can be wrapped in TLS.
- UAS
- Kerberos-based authentication is used in AIM 6+.
- clientLogin
- This web-based login can be used by both OSCAR clients and WebAPI clients.
Stage 2: Connecting to BOSS
Connect to the host and port (optionally over TLS) provided in the previous step, regardless of the method it was obtained.
Step #1 - Send FLAP SIGNON Frame
Once connected, the client should send a FLAP__FRAME_SIGNON with the login cookie and any version information it would like to provide.
Field | Size | Value |
---|---|---|
u08 | flapHeader.startMarker | '*' |
u08 | flapHeader.frameType | 0x01 (FLAP__FRAME_SIGNON) |
u16 | flapHeader.sequenceNumber | XX |
u16 | flapHeader.payloadLength | YY |
u32 | version | 0x01 |
u16 | tlvs[0].tag | 0x06 (FLAP__SIGNON_TAGS_LOGIN_COOKIE) |
u16 | tlvs[0].len | 0x100 |
blob | tlvs[0].value | base64 decoded $cookie value from Step #2 |
u16 | tlvs[1].tag | 0x4A (OSERVICE__MULTICONN_FLAGS) |
u16 | tlvs[1].len | 0x01 |
u08 | tlvs[1].value | 0x01 |
- It should then listen for a FLAP__FRAME_SIGNON from BOSS before continuing.
- Once it has received the FLAP__FRAME_SIGNON, the client can start sending SNAC messages to the server.
From Aleksandr Shutko: CLI_COOKIE: server BOS login request
|
|
Example SNAC dump with flap header:
|
Stage 3: Going Online
Once the connection has been established and the FLAP signon frames have been exchanged, the client can start sending SNACs to the server.
Step 1: Rights Requests
Usually the first thing the client sends are all the rights queries and a FEEDBAG__QUERY SNAC. It can and should send all these requests in parallel for a quicker login experience.
- Client queries the BUDDY foodgroup for rights: BUDDY__RIGHTS_QUERY
- Query the PD foodgroup rights: PD_RIGHTS_QUERY
- Query the LOCATE foodgroup rights: LOCATE_RIGHTS_QUERY
- Query the FEEDBAG foodgroup rights: FEEDBAG_RIGHTS_QUERY
- Query what the Buddy List and preferences are: FEEDBAG_QUERY
Step 2: FEEDBAG Use and Client Online
Once all the rights replies and feedbag replies are received, it is time to tell the server that the client is ready to proceed.
- First tell the server that the feedbag looks OK and the client is ready to use it: FEEDBAG_USE
- Next we tell the client we are ready to appear online to everyone else and our version numbers: OSERVICE_CLIENT_ONLINE
Step 3: Online
The client is now considered online, visible to other users, and will start to receive BUDDY__ARRIVED for any online buddies.
Next steps:
- Getting a User's Buddy Icon
- Sending and Receiving typing events.
- Sending and Receiving IMs.
- Getting a User's Buddy Info
From Aleksandr Shutko: Detailed OSCAR login sequence description
|
|
From Aleksandr Shutko: Detailed OSCAR login sequence description
|
|
FLAP Login Sign On Errors (Temp)
Standard Format Login Errors during Phase 1
These occur in response to the initial Phase 1 login command sent from the client. All Standard Format login errors follow this format. This error command is always in the Command Family 0x04. All variable-length strings are assumed to be 1 byte long when doing position numbers.
Position | Data Size | Data |
1 | Word | 0x0001 |
3 | Word | Screen Name Length (not including null) |
5 | ASCIIZ String | Screen Name that failed (null-terminated) |
6 | Byte | 0x04 |
7 | Word | Error Message URL Length (not including null) |
9 | ASCIIZ String | Error Message URL (null-terminated) |
10 | Byte | 0x08 |
11 | Byte | 0x00 |
12 | Byte | 0x02 |
13 | Word | Specific Error Code |
The current list of known "Specific Error Code"s:
Specific Error Code | Error Msg URL | Meaning |
0x0001 | http://www.aim.aol.com/errors/UNREGISTERED_SCREENNAME.html | Invalid Screen Name |
0x0005 | http://www.aim.aol.com/errors/MISMATCH_PASSWD.html | SN/Pasword Mismatch (Invalid Password) |
From Aleksandr Shutko: AUTH_FAILED: server authorization failed response
|
|
Example SNAC dump with flap header:
|
TLV Class: FLAP__SIGNON_TAGS
These tags are used in the FLAP signon frame to BOS. They appear right after the 4 byte version number.
@MAKE NOTE: Difference between ones used if BUCP is in use and ones if clientLogin or w/e was used
Name | Tag | Type | Notes |
---|---|---|---|
OSERVICE__TLV_TAGS_CLIENT_IDENTITY | 0x03 | string | Yet another client name |
OSERVICE__TLV_TAGS_LOGIN_COOKIE | 0x06 | blob | Login cookie returned by startOSCARSession |
OSERVICE__TLV_TAGS_MAJOR_VERSION | 0x17 | uint16 (word) | Client major version: (1) if the client version is "1.2.3" |
OSERVICE__TLV_TAGS_MINOR_VERSION | 0x18 | uint16 (word) | Client minor version: (2) if the client version is "1.2.3" |
OSERVICE__TLV_TAGS_POINT_VERSION | 0x19 | uint16 (word) | Client minor version: (3) if the client version is "1.2.3" |
OSERVICE__TLV_TAGS_BUILD_NUM | 0x1A | uint16 (word) | Client build number, usually monotonically increasing |
OSERVICE__TLV_TAGS_MULTICONN_LEVEL | 0x4A | uint8 (byte) | [Class: OSERVICE__MULTICONN_FLAGS] Should almost always be 0x01 |
OSERVICE__TLV_TAGS_CLIENT_RECONNECT | 0x94 | uint8 (byte) | Client claims it is reconnecting because it got knocked off |
Class: OSERVICE__MULTICONN_FLAGS
These flags control how multiple instances are handled by the servers and if current sessions need to be bumped off when a new session signs on.
Name | Value | Notes |
---|---|---|
OSERVICE__MULTICONN_LEVEL_OLD_CLIENT | 0x00 | Don't use |
OSERVICE__MULTICONN_LEVEL_MULTI | 0x01 | This is a recent client that understands multiple instances |
OSERVICE__MULTICONN_LEVEL_SINGLE | 0x03 | This is a recent client that understands multiple instances but does not want them |
From Aleksandr Shutko: Detailed OSCAR login sequence description
|
|
|
|
|
|