Trinitycore: [Aurora] Authentication

Created on 11 Mar 2016  路  11Comments  路  Source: TrinityCore/TrinityCore

Description: Connection is closed after recieving the accounts list in battlenet account

Current behaviour: The client is blocked after recieving accounts list and disconnected after few seconds

Expected behaviour: We should me able to choose the account (if multiple) and retrieve realm lists

Steps to reproduce the problem:

  1. Create an account
  2. Log in

Branch(es): Aurora

TC hash/commit: 13c14b456847b696267c7ef6723646d9fc304e0a

Operating system: Windows 10

Battlenet server logs: https://gist.github.com/Nelidon/1a07ef1171706c8671ab
Aurora logs: https://gist.github.com/Nelidon/b3bde619724e5e81b759

@Shauren

Branch-master

Most helpful comment

TLS 1.2 used - https://en.wikipedia.org/wiki/Transport_Layer_Security
Additional client specific stuff - leaf certificate must not be self signed, implies creating a certificate chain
Client verifies common name (CN) field on the certificate using a wildcard PREFIX search (not suffix) (the certificate I supplied uses CN=*.*)
Client loads the ROOT certificate used to sign certificate from a file named ca_bundle.txt.signed from CASC archive (connection_patcher changes this to tc_bundle.txt loaded from filesystem). As the name implies this file is signed and patcher removes signature check

https://github.com/TrinityCore/TrinityCore/blob/aurora/src/tools/connection_patcher/tc_bundle.txt
File structure:
JSON with certificate info
Url is matched by certificate CN
ShaHashPublicKeyInfo - not sure what exactly is hashed here - I dumped this value from client memory
SigningCertificates - the root certificate (not the one with CN=*.*)
260 padding bytes

Certificates file: https://github.com/TrinityCore/TrinityCore/blob/aurora/src/server/bnetserver/bnetserver.cert.pem
Private key: https://github.com/TrinityCore/TrinityCore/blob/aurora/src/server/bnetserver/bnetserver.key.pem

You can view the contents of these files using openssl commandline tools

All 11 comments

This might be one of the changes made later - it worked on older builds
3/9 21:19:37.980 [IBN_Login] Front connected | connectionId=11 | program=WoW | platform=Win | locale=enUS | version=Battle.net Game Service SDK v1.4.2 "f2105d073a"/50 (Feb 11 2016 13:17:26) | usedToken=false

Update: 12/03/2015
Commit: 014ee052e45af51512f50149aee758312edd3f2f

Client is disconnected since the server doesn't send game accounts information but the client understand now the server correctly:

There was no change to things being implemented or not in that commit - and since some version client sends a new packet (and expects a proper response) - not yet implemented.

New required method implemented in 02d50a290c2fe14d452f5b75c9fb1333d04fab6a

Realm list reached.

Undocumented change that I still haven't decided whether to keep it like that or not - realmlist.gamebuild now expects the exact wow build instead of "base build"

Can you give more information about certificat file and public/private keys please.

TLS 1.2 used - https://en.wikipedia.org/wiki/Transport_Layer_Security
Additional client specific stuff - leaf certificate must not be self signed, implies creating a certificate chain
Client verifies common name (CN) field on the certificate using a wildcard PREFIX search (not suffix) (the certificate I supplied uses CN=*.*)
Client loads the ROOT certificate used to sign certificate from a file named ca_bundle.txt.signed from CASC archive (connection_patcher changes this to tc_bundle.txt loaded from filesystem). As the name implies this file is signed and patcher removes signature check

https://github.com/TrinityCore/TrinityCore/blob/aurora/src/tools/connection_patcher/tc_bundle.txt
File structure:
JSON with certificate info
Url is matched by certificate CN
ShaHashPublicKeyInfo - not sure what exactly is hashed here - I dumped this value from client memory
SigningCertificates - the root certificate (not the one with CN=*.*)
260 padding bytes

Certificates file: https://github.com/TrinityCore/TrinityCore/blob/aurora/src/server/bnetserver/bnetserver.cert.pem
Private key: https://github.com/TrinityCore/TrinityCore/blob/aurora/src/server/bnetserver/bnetserver.key.pem

You can view the contents of these files using openssl commandline tools

Thank you for these information.

The worldserver doesn't detect any connections from the client after joining a realm
Aurora log: https://gist.github.com/Nelidon/ff4cc5b5df9d4aa76a06
The server should send information corresponding to AuthedToWoW

After some research the client need 3 new packets related to AuroraInterface (make a research on AuroraBackInterface.cpp) otherwise SMSG_AUTH_RESPONSE isn't considered.
Packets format is json

@shauren this can be closed?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jerbookins picture jerbookins  路  3Comments

Blasphemous picture Blasphemous  路  3Comments

Teppic1 picture Teppic1  路  3Comments

Keader picture Keader  路  3Comments

cbcs picture cbcs  路  3Comments