Show / Hide Table of Contents

    Параметр login_hint

    Часто клиентское приложение заранее знает логин пользователя, и было бы удобно сразу подставить значение логина в форме аутентификации. В качестве такой подсказки спецификация OpenID Connect 1.0 предлагает необязательный параметр login_hint.

    Данный параметр представляет собой подсказку для Центра Идентификации, которую он использует на странице аутентификации. Если указанный параметр передан и пользователь с таким логином зарегистрирован и не заблокирован в DSS, то его значение будет использовано в качестве логина, тем самым пользователю останется только ввести свой пароль. Если же пользователя с таким логином нет или его учётная запись заблокирована, то параметр будет проигнорирован.

    Параметр login_hint определён для двух сценариев: с использованием кода авторизации и с неявным разрешением (см. Authorization Code Flow и Implicit Flow).

    Примеры запросов

    Рассмотрим пример запроса, содержащего параметр login_hint (переносы строк добавлены для наглядности):

    GET /authorize?
        client_id=eea2fd3f-5c70-4d74-a594-f1e7bf81b4d7
        &resource=https:%2f%2fdss.cryptopro.ru%2fSignServer%2frest%2fapi
        &redirect_uri=http:%2f%2f127.0.0.1:9158%2f
        &response_type=code
        &login_hint=sga HTTP/1.1
    Host: dss.cryptopro.ru
    

    Получение имени пользователя из id_token

    Клиентское приложение может получить имя пользователя из id_token. Рассмотрим пример содержимого id_token:

    {
      "unique_name": "sga",
      "dss_iss": "realsts",
      "dss_uuid": "49pDZfxUwFjeHhYSsrSX2LvdSxA=",
      "role": "Users",
      "dss_group": "Default",
      "at_hash": "yQAbEebC9sgmXrjonanKPQ",
      "iss": "realsts",
      "aud": "cryptopro.cloud.csp",
      "exp": 1527844466,
      "nbf": 1527844166
    }
    

    В id_token логин пользователя содержится в утверждении unique_name. В данном примере это sga. Однако клиентскому приложению следует обратить внимание не только на значение этого утверждения, но и на значение утверждения dss_iss. В нём содержится идентификатор Центра Идентификации, осуществившего аутентификацию пользователя. Использовать значение unique_name в качестве параметра login_hint можно только в случае, если dss_iss равен realsts. Значение realsts говорит о том, что в unique_name находится логин пользователя в ЦИ DSS, а не логин из стороннего ЦИ. Например, unique_name из такого маркера использовать нельзя:

    {
      "unique_name": "sga@dss.cryptopro.ru",
      "dss_iss": "adfs",
      "dss_uuid": "49pDZfxUwFjeHhYSsrSX2LvdSxA=",
      "role": "Users",
      "dss_group": "Default",
      "at_hash": "yQAbEebC9sgmXrjonanKPQ",
      "iss": "realsts",
      "aud": "cryptopro.cloud.csp",
      "exp": 1527844466,
      "nbf": 1527844166
    }
    
    Back to top © ООО "КРИПТО-ПРО", 2000-2020