Это классическая путаница между маркером доступа (Access Token) и маркером идентификации (ID Token), которые являются основой протокола OpenID Connect, используемого в ЕСИА.
"
urn:esia:sbj:oid (из ID Token)" - это постоянный и уникальный OID пользователя. Он предназначен для идентификации. А "
urn:esia:sbj_id (из Access Token)" - это временный идентификатор сессии. Полагаться на него некорректно, даже если где-то это случайно работает.
Ваш алгоритм должен быть таким:
- В процессе авторизации запросить и получить от ЕСИА и access_token, и id_token.
- Распарсить id_token (это стандартный JWT).
- Извлечь из него значение поля urn:esia:sbj:oid. Это и будет искомый {oid}.
- Сформировать URL запроса, подставив туда полученный oid.
- Выполнить GET запрос по этому URL, передав access_token в заголовке Authorization: Bearer ... для авторизации на сервере.