Как найти токен сервера

Counter-Strike: Global Offensive

45 ratings

Привязка сервера CS:GO к Steam аккаунту

С недавних пор Valve сделали обязательным привязку всех игровых серверов CS:GO к Steam аккаунту.
Если не привязать сервер к Steam аккаунту, то на данный игровой сервер нельзя будет подключиться.

Основная информация

В консоли сервера в текущий момент вы можете видеть подобное сообщение:
——————————————————————————————————————————-
No Steam account token was specified.
Logging into anonymous game server account.
Support for anonymous logins will go away soon.
To create a game server account go to
http://steamcommunity.com/dev/managegameservers

——————————————————————————————————————————-
И так, как же привязать игровой сервер к Steam аккаунту?

Шаг 1.

Для Steam аккаунта должны быть выполнены следующие требования:
– к аккаунту должен быть привязан номер телефона;
– аккаунт не должен быть ограниченным, т.е. с аккаунта нужно потратить как минимум 5$ через магазин Steam;
– на аккаунте должна присутствовать данная игра и отсутствовать VAC Ban.

Шаг 2.

Если аккаунт удовлетворяет данным условия, то заходим на данную страницу: Ссылка.
В правом верхнем углу, нажмите Войти и выполните вход в свой Steam аккаунт, если вы этого еще не делали.
В поле App ID нужно ввести идентификатор игры, для CS:GO это 730.
В поле Memo вводим любой текст. Желательно написать тот текст, по которому вы в дальнейшем сможете вспомнить для какого игрового сервера генерировали данный токен.


Memo можно отредактировать в любой момент. Для удобства можете, например, ввести туда IP:Port игрового сервера, чтобы знать, на каком игровом сервере вы использовали полученный токен. После нажатия на кнопку Create, вы увидите таблицу со сгенерированными токенами.

Шаг 3.

Скопируйте полученный токен, откройте server.cfg и вставьте токен с параметром sv_setsteamaccount. Пример:
sv_setsteamaccount “194162A59718347HH5355BC7D08C374”

Сохраните изменения и включите/перезапустите игровой сервер.
В консоли игрового сервера вы увидите подобную строку:

Logging into Steam gameserver account with logon token ‘194162A59718347HH5355BC7D08C374’

На этом привязка игрового сервера к аккаунту Steam завершена, можете подключаться.
P.S. Не забываем про открытие/проброс портов (для ОС windows и роуторов).

И на последок!

Спасибо предпочитаю скинцами из CS:GO. Моя ссылка для обменов: Ссылка.
Если еще остались вопросы, не стесняемся задаем в комментариях моего профиля.

Мои руководства:
Игровой сервер CS:GO на ОС Windows: Ссылка.
Привязка сервера CS:GO к Steam аккаунту (Создание Токена): Ссылка.

Всем спасибо за внимание, надеюсь моя статья вам помогла.
P.S. Буду рад вас видеть в моей группе Steam: Ссылка.

Привязка игрового сервера к Steam аккаунту является обязательной. Если не привязать сервер к Steam аккаунту, то на данный игровой сервер нельзя будет подключиться.
В консоли сервера в текущий момент вы можете видеть подобное сообщение:

****************************************************
*  No Steam account token was specified.           *
*  Logging into anonymous game server account.     *
*  Support for anonymous logins will go away soon. *
*  To create a game server account go to           *
*  http://steamcommunity.com/dev/managegameservers *
****************************************************

Как привязать игровой сервер к Steam аккаунту?

Шаг 1.
Для Steam аккаунта должны быть выполнены следующие требования:

  • к аккаунту должен быть привязан номер телефона;
  • аккаунт не должен быть ограниченным, т.е. с аккаунта нужно потратить как минимум 5$ через магазин Steam;
  • на аккаунте должна присутствовать данная игра и отсутствовать VAC Ban;

Шаг 2.
Если аккаунт удовлетворяет данным условия, то заходим на данную страницу: https://steamcommunity.com/dev/managegameservers
В правом верхнем углу, нажмите Войти и выполните вход в свой Steam аккаунт, если вы этого еще не делали.
В поле App ID нужно ввести идентификатор игры, для CS:GO это 730, для TF2 440.
В поле Memo вводим любой текст (можно использовать только цифры и латинские буквы). Желательно написать тот текст, по которому вы в дальнейшем сможете вспомнить для какого игрового сервера генерировали данный токен. (Рисунок 1)

Рисунок 1. Форма создания нового токена в GSLT.

Memo можно отредактировать в любой момент. Для удобства можете, например, ввести туда ID игрового сервера из нашей панели управления, чтобы знать, на каком игровом сервере вы использовали полученный токен.
После нажатия на кнопку Create, вы увидите таблицу со сгенерированными токенами. (Рисунок 2)

Рисунок 2. Список с созданными токенами в GSLT.

Шаг 3.
Скопируйте полученный токен, откройте autoexec.cfg и вставьте токен в параметр sv_setsteamaccount. (Рисунок 3)

Рисунок 3. Добавление параметра sv_setsteamaccount в autoexec.cfg

Сохраните изменения.

Шаг 4.
Перезапустите игровой сервер, в консоли сервера увидите подобную строку:
Logging into Steam gameserver account with logon token ‘194162A59718347HH5355BC7D08C374’ (Рисунок 4)

Рисунок 4. Консоль сервера.

На этом привязка игрового сервера к аккаунту Steam завершена.

Вопросы и ответы.
Немного дополнительной информации по некоторым вопросам.


Вопрос №1: Как осуществляется привязка игрового сервера к Steam аккаунту?
Ответ: На сайте Valve на специальной странице нужно сгенерировать токен, который требуется вставить в конфиг игрового сервера. Более подробная инструкция написана выше.


Вопрос №2: Что это дает и зачем все это нужно делать?
Ответ: С недавних времен Valve блокируют игровые сервера за нарушение правил пользования игровыми серверами. Блокировка осуществлялась по IP-адресу, что вызывало большое количество недовольств со стороны пользователей игровых хостингов, т.к. в таком случае страдали пользователи, у которых игровой сервер работал на том же IP-адресе, что и заблокированный сервер.
Теперь в случае нарушения правил пользования игровым серверов, блокировка будет осуществляться по Steam аккаунту.


Вопрос №3: А за что блокируют игровые сервера, можно поподробнее?
Ответ: В CS:GO блокировка игровых серверов происходит за установленные на сервере плагины, которые подменяют модели оружия – выдают те модели, которых у игрока на самом деле нет в инвентаре; подменяют ранги, звания, медали в таблице очков. Подробнее здесь: http://forum.myarena.ru/index.php?/topic/28674


Вопрос №4: Почему на некоторых серверах установлены запрещенные плагины, из-за которых блокируют сервера и эти сервера еще не заблокировали?
Ответ: Рано или поздно такой сервер попадет под блокировку. Методы проверки игровых серверов Valve не разглашают.


Вопрос №5: Что произойдет, если я нарушу правила пользования игровым сервером?
Ответ: Все сгенерированные токены, принадлежащие к этому аккаунту будут заблокированы. Генерация новых будет невозможна. Игроки не смогут подключиться к игровым серверам, где использовались токены от этого аккаунта. Также на аккаунт будет выдана внутриигровая блокировка. Вы не сможете с этого аккаунта играть некоторое время на игровых серверах в CS:GO.


Вопрос №6: Максимум можно привязать 1000 серверов к аккаунту, правильно я понимаю?
Ответ: Да, все верно. Вы можете удалять неиспользуемые токены и генерировать новые.


Вопрос №7: Почему игровой хостинг не предоставляет игровой сервер, привязанный к их Steam аккаунту?
Ответ: Потому что, если один из пользователей нарушит правила пользования игровым сервером, то под блокировку попадут все игровые сервера, у которых токен был сгенерирован с данного аккаунта.


Вопрос №8: Что делать, если токен заблокировали, как выйти из под блокировки?
Ответ: Нужно регистрировать новый Steam аккаунт, прикреплять к нему номер телефона, приобрести через него игру CS:GO и сгенерировать новые токены. После этого поменять токены на всех игровых серверах, которые попали под блокировку.


Вопрос №9: Для каждого игрового сервера нужно генерировать свой токен?
Ответ: Да, именно так.


Вопрос №10: Что еще дает привязка к Steam аккаунту или Valve это сделали только для того, чтобы не блокировать игровые сервера по IP?
Ответ: Valve планируют хранить в избранном в игре информацию об идентификаторе аккаунта, к которому привязан сервер. Если у сервера сменится адрес, но останется старый токен, то в избранном сервер останется, у него автоматически обновится адрес на новый. Этот подход уже работает для TF2.
Также можно предполагать, что при смене токена на игровом сервере, игровой сервер может пропасть из избранного (информация предположительная, нужно проверять).
Возможно, для CS:GO в текущий момент эта функция еще не реализована.


Вопрос №11: А что по поводу no-steam? На заблокированные игровые сервера и сервера, которые не привязаны к Steam аккаунту, можно будет зайти с no-steam или нет?
Ответ: Как показала практика во время предыдущих блокировок игровых серверов, это никак не влияет на no-steam игроков. Такие игроки спокойно смогут зайти на игровой сервер.
Но в любом случае лучше использовать лицензионную версию игры и соблюдать правила, чтобы получать полноценное удовольствие от игры.


Вопрос №12: Мой сервер не запускается с этим сообщением, что делать?

****************************************************
* FATAL ERROR *
* Steam account token specified was revoked. *
* Double-check your sv_setsteamaccount setting. *
* *
* To create a game server account go to *
* http://steamcommunity.com/dev/managegameservers *
* *
****************************************************

Ответ: Это сообщение означает, что токен был аннулирован (отменен, отозван) компанией Valve в последствии блокировки из-за нарушения правил пользования игровыми серверами. Более точную причину можно узнать только в поддержке Valve.


Вопрос №13: Мой сервер не запускается с этим сообщением, что делать?

****************************************************
*                                                  *
*  Steam account token was reused elsewhere.       *
*  Make sure you are us*  token for each game server that you operate.    *
*                                                  *
*  To create additional game server accounts go to *
*  http://steamcommunity.com/dev/managegameservers *
*                                                  *
*  This game server instance will now shut down!   *
*                                                  *
****************************************************

Ответ: Это сообщение означает, что токен был использован повторно и Вам следует регистрировать новый для нового сервера.


Данный раздел демонстрирует получение авторизационного токенa приложениями.

Примечание. Рекомендации для различных типов приложений (настольное, мобильное и др.) приведены в руководстве по OAuth-авторизации.

При регистрации или редактировании параметров приложения на OAuth-сервере Яндекса необходимо в поле Callback URI указать URL скрипта, выполняющего получение токена. Например:

 http://site.ru/get_token.php

Код скрипта приведен ниже.

При запросе токена требуется указывать идентификатор и пароль приложения, сгенерированные при регистрации на OAuth-сервере.

  1. Приложение перенаправляет пользователя по ссылке вида

    https://oauth.yandex.ru/authorize?response_type=code&client_id=<идентификатор_приложения>

    На открывшейся странице пользователь нажимает кнопку Разрешить.

  2. OAuth-сервер Яндекса осуществляет редирект на адрес из Callback URI. При этом к адресу добавляется параметр code. Например:

     http://site.ru/get_token.php?code=<код_подтверждения>
  3. Скрипт выполняет POST-запрос на https://oauth.yandex.ru/token, передавая следующие параметры:

    • grant_type = authorization_code

    • code = <код_подтверждения>

    • client_id = <идентификатор_приложения>

    • client_secret = <пароль_приложения>

  4. OAuth-сервер передает ответ в формате JSON. Ключ access_token содержит OAuth-токен. Например:

    {"access_token": "ea135929105c4f29a0f5117d2960926f"}

    Полученный токен необходимо сохранить и использовать в запросах к API Директа.

# -*- coding: utf-8 -*-
from bottle import route, run, request
import httplib
import urllib
import json

#Идентификатор приложения
client_id = 'YOUR_CLIENT_ID'
#Пароль приложения
client_secret = 'YOUR_CLIENT_SECRET'

@route('/')
def index():
    #Если скрипт был вызван с указанием параметра "code" в URL,
    #то выполняется запрос на получение токена
    if request.query.get('code'):
        #Формирование параметров (тела) POST-запроса с указанием кода подтверждения
        query = {
            'grant_type': 'authorization_code',
            'code': request.query.get('code'),
            'client_id': client_id,
            'client_secret': client_secret,
        }
        query = urllib.urlencode(query)

        #Формирование заголовков POST-запроса
        header = {
            'Content-Type': 'application/x-www-form-urlencoded'
        }

        #Выполнение POST-запроса и вывод результата
        connection = httplib.HTTPSConnection('oauth.yandex.ru')
        connection.request('POST', '/token', query, header)
        response = connection.getresponse()
        result = response.read()
        connection.close()
        
        #Токен необходимо сохранить для использования в запросах к API Директа
        return json.loads(result)['access_token']


#Запускаем веб-сервер
run(host='localhost', port=80, quiet=True)

<?php
// Идентификатор приложения
$client_id = 'YOUR_CLIENT_ID'; 
// Пароль приложения
$client_secret = 'YOUR_CLIENT_SECRET';

// Если скрипт был вызван с указанием параметра "code" в URL,
// то выполняется запрос на получение токена
if (isset($_GET['code']))
  {
    // Формирование параметров (тела) POST-запроса с указанием кода подтверждения
    $query = array(
      'grant_type' => 'authorization_code',
      'code' => $_GET['code'],
      'client_id' => $client_id,
      'client_secret' => $client_secret
    );
    $query = http_build_query($query);

    // Формирование заголовков POST-запроса
    $header = "Content-type: application/x-www-form-urlencoded";

    // Выполнение POST-запроса и вывод результата
    $opts = array('http' =>
      array(
      'method'  => 'POST',
      'header'  => $header,
      'content' => $query
      ) 
    );
    $context = stream_context_create($opts);
    $result = file_get_contents('https://oauth.yandex.ru/token', false, $context);
    $result = json_decode($result);

    // Токен необходимо сохранить для использования в запросах к API Директа
    echo $result->access_token;
  }
?>

Как привязать сервер к Steam аккаунту через токен?

Когда у вас в консоли сервера появляется такое:

****************************************************
*                                                  *
*  No Steam account token was specified.           *
*  Logging into anonymous game server account.     *
*  Connections will be restricted to LAN only.     *
*                                                  *
*  To create a game server account go to           *
*http://steamcommunity.com/dev/managegameservers   *
*                                                  *
****************************************************

то нужно сервер привязать к Steam аккаунту. Это основное правило работы с серверами CS:Source и CS:Global Offensive.
Привязка предельно проста.
1. Нужно выполнить условия для привязка аккаунта, а именно:
- привязать номер телефона;
- должны быть потрачены в магазине 5$;
- у вас должна быть игра CS:GO и не должно быть VAC-бана.
2. Теперь, после того как предыдущий пункт выполнен, переходим сюда http://steamcommunity.com/dev/managegameservers и сделать следующее:
- входим в свой аккаунт;
- Номер приложения: здесь пишем ID CS:GO - 730;
- Примечание: вводим к примеру название сервера;
- Нажимаем "Создать".
После вы увидите таблицу с токеном (Логин токен).
3. Копируете полученный токен и заходить на хостинге в управление сервером и находите в меню Настройки, а там переходите в Основные настройки (SERVER.CFG). Находите поле sv_setsteamaccount и вводите туда токен. Выглядить будет так sv_setsteamaccount "FDOT7HH539045BC47D356774"(пример).
Внизу жмем кнопку "Сохранить" и перезагружаем сервер..
Переходим в консоль сервер и если вы все правильно сделали, увидите это:

Logging into Steam gameserver account with logon token 'FDOT7HH539045BC47D356774'(пример)

Все, вы привязали игровой сервер и можете спокойно на нем теперь играть.

ВНИМАНИЕ! Токен могут получать бан за скины оружия, перчаток, ножей и игроков, потом никогда не ставьте токен со своего аккаунта, если будете ставить эти плагины. Лучше всего сразу установить плагин "Token Auto Updater" и купить по 3 рубля токены.

As the title suggests, where are JWT tokens stored on the server side? in database or in memeory? I understand the implementation can vary due to different requirements, but just in general where would you store it?

If I want to provide a very basic token authentication server, meaning upon receiving a username and password via a POST request, I would like to return a token. In this case, how is a token generated with a very basic algorithm work differently than a jwt token?

With a token generated by a simple algorithm:

  1. it does not contain payload
  2. its value is not computed based on the username and password, thus it cannot be rehashed back to anything meaningful

In this case, is there still value to use JWT?

Thanks!

asked Oct 31, 2015 at 4:25

Cheng's user avatar

ChengCheng

16.6k23 gold badges73 silver badges102 bronze badges

3

client needs to store it, on server storage is not required.

JWT have all the claims in itself and is signed by the server as well. On receipt, server checks for the signature and reads the claims. It does not match it against a stored value. That is the whole point of using JWT against access tokens.

Look at how a JWT is structured.

answered Jun 6, 2018 at 8:38

Vikash's user avatar

VikashVikash

2,0263 gold badges23 silver badges30 bronze badges

5

You don’t need to store token on server side.
You should store a private key ( any string of your choice)at server preferably as environment variable.The jsonwebtoken provided method use this private key to generate a token to pass to client.
Client has to store this token at client side so that it can pass this token to subsequent request to server in header.
Server would extract the token value from header and validate it using private key by calling a method of jsonwebtoken.If token is not modified by any means then validate will succeed.

answered Nov 10, 2018 at 19:01

Anuranjan Srivastav's user avatar

4

Jwt token is not required to be stored but the “secret-key” needs to be stored.
The structure of jwt is header.payload.signature where signature is generated as below by the server :

signature = HS256(base64Header + '.' + base64Payload, 'mysecret')

So in essense:
1.header.payload.signature is sent to client on first sign in

2.client return back header.payload.signature in subsequent api call
3.server decodes it for verification as below:
base64Header, base64Payload, signature = token.split(‘.’)

header = base64Decode(base64Header)  
payload = base64Decode(base64Payload)

serverComputedSignature = HS256(base64Header + '.' + base64Payload, 
'mysecret')

if serverComputedSignature != signature:  
 print('FAILED')

answered Nov 10, 2018 at 18:48

Akash Jain's user avatar

Akash JainAkash Jain

2574 silver badges9 bronze badges

A token is a generic term. JWT defines the structure of a token which contains the below three parts.

1. header
2. payload
3. signature

Storing JWT or any other format of token is driven by the business need.

If the content of the JWT has to be used/validated for any reason then it can be stored in a DB or any other storage.

If the need is to validate the signature then there is no reason to store the issued JWT.

answered Aug 14, 2019 at 22:13

Maniganda Prakash's user avatar

Добавить комментарий