Задать вопрос
Ответы пользователя по тегу OAuth
  • Откуда корректно брать OID пользователя в ЕСИА?

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