Striven
2025-09-13 9d7ca0fde8022bacf992c7b8c0053d1e28f4248b
04_rendezvous/01_rmc_protocols/loginprotocol.md
File was renamed from 04_rendezvous/01_protocols/01_loginprotocol.md
@@ -1,7 +1,9 @@
## Overview
# RendezVous: RMC Protocols: LoginProtocol
The Login Protocol is common among Ubisoft games and is responsible for authenticating users by their [UbiServices ticket](../../03_ubisoft_services/02_accessing_ubiservices.md#getting-a-ticket). Additionally, it provides the server with information about the user's client and game information, and the server can re-direct the client to a more appropriate server.
## Method: `LoginWithToken`
Authenticates with the server using a [UbiServices](../../03_ubisoft_services/02_accessing_ubiservices.md) ticket. See [Initial Login Flow](../../03_ubisoft_services/04_initial_login_flow.md) for information on how to obtain one.
Authenticates with the server using a [UbiServices ticket](../../03_ubisoft_services/02_accessing_ubiservices.md#getting-a-ticket). See [Initial Login Flow](../../03_ubisoft_services/04_initial_login_flow.md) for information on how to obtain one.
### Request
@@ -50,17 +52,18 @@
00000270  08 00 70 72 75 64 70 3A 2F 00                    ..prudp:/.
```
_[Full Request Packet](../../00_packet_dumps/C2S-LoginProtocol__LoginWithToken_V1)_
> [!TIP]
> This is just the request data portion of a full packet. Check out a [full request packet dump](../../00_packet_dumps/C2S-LoginProtocol__LoginWithToken_V1) for this call.
> [!NOTE]
> [!IMPORTANT]
> While this is a real packet sent, the ticket has been replaced with a dummy for security reasons. The normal ticket is a base64-encoded [JWT](../../03_ubisoft_services/04_initial_login_flow.md#ticket).
##### Parsing
| Name                | Description                                                         | Type                                                                |
|---------------------|---------------------------------------------------------------------|---------------------------------------------------------------------|
| Token               | Ticket obtained via UbiServices, identifying the connecting client. | [`String`](../03_rendezvous_structure.md#structure-string)          |
| Client Version Info | Information about the client version                                | [`ClientVersionInfo`](#client-version-info)                         |
| Diagnostic URL      | Unknown.                                                            | [`Station URL`](../03_rendezvous_structure.md#structure-stationurl) |
| Name                | Description                                                         | Type                                                     |
|---------------------|---------------------------------------------------------------------|----------------------------------------------------------|
| Token               | Ticket obtained via UbiServices, identifying the connecting client. | [`String`](../03_structure.md#structure-string)          |
| Client Version Info | Information about the client version                                | [`ClientVersionInfo`](#client-version-info)              |
| Diagnostic URL      | Unknown.                                                            | [`Station URL`](../03_structure.md#structure-stationurl) |
### Successful Response
@@ -68,11 +71,11 @@
> TODO: Example
##### Parsing
| Name                 | Description                                                        | Type                                                                |
|----------------------|--------------------------------------------------------------------|---------------------------------------------------------------------|
| User PID             | ID of the user profile that the connected client is identified as. | [`UUID`](../03_rendezvous_structure.md#structure-uuid)              |
| Protocol URL         | Unknown.                                                           | [`Station URL`](../03_rendezvous_structure.md#structure-stationurl) |
| Required Redirection | Unknown exactly. Presumably self-explanatory.                      | `bool`                                                              |
| Name                 | Description                                                        | Type                                                     |
|----------------------|--------------------------------------------------------------------|----------------------------------------------------------|
| User PID             | ID of the user profile that the connected client is identified as. | [`UUID`](../03_structure.md#structure-uuid)              |
| Protocol URL         | Unknown.                                                           | [`Station URL`](../03_structure.md#structure-stationurl) |
| Required Redirection | Unknown exactly. Presumably self-explanatory.                      | `bool`                                                   |
## Method: `Register`
Currently unknown exactly what this method does, although it is called after receiving a successful response from the [LoginWithToken method](#method-loginwithtoken).
@@ -96,15 +99,16 @@
000000C0  31 35 00                                         15.
```
_[Full Request Packet](../../00_packet_dumps/C2S-LoginProtocol__Register_V1)_
> [!TIP]
> This is just the request data portion of a full packet. Check out a [full request packet dump](../../00_packet_dumps/C2S-LoginProtocol__Register_V1) for this call.
> [!NOTE]
> [!IMPORTANT]
> While this is a real packet sent, local IP addresses have been replaced with dummies for privacy reasons. It is currently unknown how the IP addresses are produced.
##### Parsing
| Name         | Description | Type                                                                                                                             |
|--------------|-------------|----------------------------------------------------------------------------------------------------------------------------------|
| Station URLs | Unknown.    | [`List`](../03_rendezvous_structure.md#structure-listt)`<`[`Station URL`](../03_rendezvous_structure.md#structure-stationurl)`>` |
| Name         | Description | Type                                                                                                       |
|--------------|-------------|------------------------------------------------------------------------------------------------------------|
| Station URLs | Unknown.    | [`List`](../03_structure.md#structure-listt)`<`[`Station URL`](../03_structure.md#structure-stationurl)`>` |
### Response
@@ -112,7 +116,7 @@
> TODO: Example
##### Parsing
| Name          | Description                                   | Type                                                                |
|---------------|-----------------------------------------------|---------------------------------------------------------------------|
| Connection ID | Unknown exactly. Presumably self-explanatory. | `u32`                                                               |
| Url Public    | Unknown.                                      | [`Station URL`](../03_rendezvous_structure.md#structure-stationurl) |
| Name          | Description                                   | Type                                                     |
|---------------|-----------------------------------------------|----------------------------------------------------------|
| Connection ID | Unknown exactly. Presumably self-explanatory. | `u32`                                                    |
| Url Public    | Unknown.                                      | [`Station URL`](../03_structure.md#structure-stationurl) |