RU2805537C2 - Methods and systems for authenticating a possible user of the first and second electronic services - Google Patents
- ️Wed Oct 18 2023
Область техники, к которой относится изобретениеField of technology to which the invention relates
[01] Настоящая технология относится к компьютерным системам и способам для аутентификации пользователя первого и второго электронных сервисов.[01] This technology relates to computer systems and methods for authenticating the user of the first and second electronic services.
Уровень техникиState of the art
[02] Реализуемые в пользовательских устройствах электронные сервисы предназначены для разнообразных целей, включая бизнес, социальные сети, платежи и т.д. Эти сервисы или приложения обеспечивают графический интерфейс пользователя (GUI, Graphical User Interface) для представления данных пользователям и обеспечения взаимодействия пользователей с сервисами. Приложения могут загружаться в пользовательское устройство, например, для обеспечения безопасности и аутентификации, если пользователь желает использовать их встроенные функциональные возможности.[02] Electronic services implemented in user devices are intended for a variety of purposes, including business, social networks, payments, etc. These services or applications provide a graphical user interface (GUI) to present data to users and allow users to interact with the services. Applications may be downloaded to the user device, for example, to provide security and authentication if the user wishes to use their built-in functionality.
[03] Благодаря недавним разработкам в области систем веб-сервисов, в частности, систем социальных сетей, таких как Facebook™, или торговых электронных платформ, таких как Amazon™, система базового веб-сервиса может взаимодействовать с системой веб-сервиса, внешней по отношению к системе базового веб-сервиса. Такие внешние системы веб-сервисов также могут называться системами сторонних веб-сервисов. В качестве примеров разработанных механизмов, обеспечивающих взаимодействие системы базового веб-сервиса со системой стороннего веб-сервиса, можно привести механизмы, позволяющие пользователю входить в систему стороннего веб-сервиса путем предоставления своего регистрационного имени, связанного с системой базового веб-сервиса.[03] With recent developments in web service systems, particularly social networking systems such as Facebook™ or e-commerce platforms such as Amazon™, a core web service system can communicate with a web service system external to relation to the underlying web service system. Such external web service systems may also be referred to as third party web service systems. Examples of mechanisms that have been developed to allow the core web service system to interact with a third-party web service system include mechanisms that allow a user to log into the third-party web service system by providing a login name associated with the core web service system.
[04] В патенте US11064047 описаны способы обеспечения доступности текущих данных приложения путем использования соответствующего приложения.[04] Patent US11064047 describes methods for making current application data available through the use of a corresponding application.
Раскрытие изобретенияDisclosure of the Invention
[05] В некоторых приложениях желательно ограничивать или предотвращать предоставление системе стороннего веб-сервиса данных, связанных с учетной записью пользователя системы базового веб-сервиса. Например, пользователь сервиса может быть заинтересован в лучшем управлении совместным использованием данных, относящихся к персональной информации, связанной с его учетной записью в системе базового веб-сервиса, в частности, данных, хранящихся в памяти системы базового веб-сервиса. Проблема лучшего управления совместным использованием данных, относящихся к персональной информации, часто может возникать, когда система базового веб-сервиса взаимодействует с одной или несколькими системами сторонних веб-сервисов, которые могут быть не настолько хорошо известными пользователю или надежными, как система базового веб-сервиса.[05] In some applications, it is desirable to limit or prevent the third-party web service system from exposing data associated with the underlying web service system's user account. For example, a service user may be interested in better managing data sharing related to personal information associated with his or her account on the underlying web service system, particularly data stored in the storage of the underlying web service system. The issue of better managing data sharing related to personal information can often arise when the underlying web service system interacts with one or more third-party web service systems that may not be as familiar to the user or trusted as the underlying web service system. .
[06] Разработчики настоящей технологии определили по меньшей мере две проблемы, связанные с аутентификацией пользователя с помощью системы базового веб-сервиса. Во-первых, пользователю удобно использовать первый сервис в качестве «шлюза» для доступа к другим сервисам (например, аутентификация в сервисе электронной почты обеспечивает пользователю возможность аутентификации в музыкальном сервисе). При этом нежелательно передавать персональную информацию пользователя непосредственно сторонним веб-сервисам. Такое обращение с персональной информацией повышает риск утечки данных. Во-вторых, аутентификация на основе известных подходов предусматривает совместное использование идентификатора пользователя в нескольких веб-сервисах, в результате чего сторонние сервисы могут отслеживать пользователя по идентификатору пользователя и сообщать идентификатор пользователя другим сервисам.[06] The developers of this technology have identified at least two problems associated with user authentication using the underlying web service system. First, it is convenient for the user to use the first service as a “gateway” to access other services (for example, authentication in an email service allows the user to authenticate in a music service). However, it is not advisable to transfer the user’s personal information directly to third-party web services. Such handling of personal information increases the risk of data leakage. Second, authentication based on known approaches involves sharing a user ID across multiple web services, so that third-party services can track a user by user ID and report the user ID to other services.
[07] Базовый сервис может быть реализован в виде так называемого суперприложения (super app). В общем случае суперприложение представляет собой мобильное приложение, которое предоставляет несколько сервисов, включая, например, платежи и обработку финансовых операций, и фактически является всеобъемлющей интерактивной платформой для торговли и общения, которая охватывает многие аспекты личной жизни и коммерческой деятельности. В некоторых вариантах реализации суперприложения оно может представлять собой торговую площадку для услуг и предложений, предоставляемых с применением собственной технологии и путем интеграции сторонних элементов.[07] The basic service can be implemented as a so-called super application. In general, a super app is a mobile application that provides multiple services, including, for example, payments and financial transaction processing, and is effectively a comprehensive interactive trading and communication platform that covers many aspects of personal life and business. In some implementations, the super app may be a marketplace for services and offerings provided using proprietary technology and integrating third-party elements.
[08] Для лучшей иллюстрации этого можно предположить, что пользователь желает посмотреть театральную постановку в Москве через несколько дней с друзьями. Чтобы реализовать этот план, пользователю может потребоваться переключение между несколькими приложениями на его телефоне. Пользователю может потребоваться согласовать план со своими друзьями в сервисе WhatsApp™, купить билеты на театральную постановку в приложении Ticketmaster™, заказать поездку на спектакль через сервис Yandex.Taxi™, а после спектакля расплатиться друг с другом за напитки с помощью приложения Venmo™. В этом примере суперприложение может объединять для пользователя функции всех этих приложений в одном приложении, таким образом действуя в качестве «привратника» для разнообразных взаимодействий, выполняемых пользователем в интерактивном режиме. Например, в последнее время повышается важность социальных сетей в таких сферах деятельности пользователей, как покупки, банковские операции и развлечения.[08] To better illustrate this, we can assume that the user wants to watch a theater production in Moscow in a few days with friends. To implement this plan, the user may need to switch between multiple applications on their phone. The user may need to coordinate a plan with their friends on WhatsApp™, buy tickets to a theater production using the Ticketmaster™ app, book rides to a show through Yandex.Taxi™, and pay each other for drinks after the show using the Venmo™ app. In this example, a superapp can combine the functionality of all of these applications into a single application for the user, thereby acting as a gatekeeper for a variety of interactions that the user performs online. For example, the importance of social networks has recently increased in user activities such as shopping, banking and entertainment.
[09] В некоторых вариантах осуществления изобретения разработчики настоящей технологии реализовали способы и системы, в которых пользователь может использовать свои регистрационные данные из базового сервиса для входа в различные клиентские системы веб-сервисов, работающих совместно с базовым сервисом.[09] In some embodiments of the invention, developers of the present technology have implemented methods and systems in which a user can use their login credentials from the underlying service to log into various web service client systems operating in conjunction with the underlying service.
[10] В других вариантах осуществления изобретения базовый сервис (например, суперприложение) может формировать уникальный идентификатор USUID (User-Service Unique Identifier) для аутентификации пользователя в конкретном клиентском сервисе. Следует отметить, что идентификатор USUID уникален для пары «пользователь - клиентский сервис». В других вариантах осуществления изобретения базовый сервис (например, суперприложение) может формировать уникальный идентификатор PSUID (Publisher Specific Unique Identifier) для аутентификации пользователя у конкретного издателя клиентского сервиса. Идентификатор PSUID уникален для пары «пользователь-издатель».[10] In other embodiments, the underlying service (eg, a super application) may generate a unique USUID (User-Service Unique Identifier) to authenticate a user to a particular client service. It should be noted that the USUID is unique to the user-client service pair. In other embodiments of the invention, the underlying service (eg, a super application) may generate a unique PSUID (Publisher Specific Unique Identifier) to authenticate the user to a specific publisher of the client service. The PSUID is unique to a user-publisher pair.
[11] В тех вариантах осуществления изобретения, где издатель управляет несколькими клиентскими сервисами, издатель может решить, используется один и тот же идентификатор PSUID для нескольких клиентских сервисов или нет. Например, издатель может решить, что один и тот же идентификатор PSUID может использоваться для нескольких клиентских сервисов, т.е. этот идентификатор PSUID уникален для пары «пользователь-издатель». В другом примере издатель может решить, что различные идентификаторы PSUID используются для нескольких клиентских сервисов, т.е. соответствующие идентификаторы USUID используются для соответствующих клиентских сервисов, при этом идентификатор USUID уникален для пары «пользователь - клиентский сервис».[11] In those embodiments of the invention where the publisher manages multiple client services, the publisher can decide whether the same PSUID is used for multiple client services or not. For example, a publisher may decide that the same PSUID can be used for multiple client services, e.g. this PSUID is unique to the user-publisher pair. In another example, the publisher may decide that different PSUIDs are used for multiple client services, i.e. the corresponding USUIDs are used for the corresponding client services, with the USUID being unique to the user-client service pair.
[12] Предполагается, что информация о пользователе и информация о клиенте (и/или информация об издателе) может быть получена и обезличена. Идентификатор USUID может быть сформирован на основе такой обезличенной информации о паре «пользователь-клиент» (и/или о паре «пользователь-издатель»). Информация о пользователе может содержать имя пользователя. Дополнительно или в качестве альтернативы информация о пользователе может содержать идентификатор пользователя (UID, User Identifier), уникальный для конкретного пользователя. Дополнительные данные могут быть использованы для формирования идентификатора USUID. Процесс обезличивания может осуществляться путем шифрования информации о пользователе с использованием алгоритма шифрования.[12] It is assumed that user information and customer information (and/or publisher information) can be obtained and anonymized. The USUID may be generated from such anonymized user-client pair (and/or user-publisher) information. The user information may include the user's name. Additionally or alternatively, the user information may include a User Identifier (UID) unique to a particular user. Additional data may be used to generate the USUID. The anonymization process can be carried out by encrypting user information using an encryption algorithm.
[13] В других вариантах осуществления изобретения идентификатор USUID может быть упакован в контейнер с отметкой времени, указывающей на период действия этого идентификатора USUID. Например, отметка времени может представлять собой момент времени, соответствующий времени создания контейнера, к которому добавлен заранее заданный срок действия контейнера. По истечении заранее заданного срока действия контейнера клиентская система веб-сервиса требует аутентификации пользователя, чтобы обеспечить безопасное взаимодействие с пользователем, и/или может отправлять запрос базовому сервису на повторное формирование «свежего» идентификатора USUID. Упаковка идентификатора USUID с такой отметкой времени позволяет предотвращать мошенническое использование безопасных идентификаторов USUID, даже если мошеннический агент получил доступ к устаревшему идентификатору USUID. В некоторых вариантах осуществления изобретения идентификатор USUID и отметка времени могут быть включены в состав полезных данных веб-токена JSON (JWT, JSON Web Token), отправляемого из базового сервиса клиентскому сервису.[13] In other embodiments of the invention, the USUID may be packaged in a container with a timestamp indicating the validity period of the USUID. For example, the timestamp may be a point in time corresponding to the time the container was created, to which is added a predetermined expiration date for the container. After a predetermined container expiration date, the web service client system requires user authentication to ensure a secure user experience and/or may request the underlying service to regenerate a “fresh” USUID. Packaging the USUID with this timestamp helps prevent fraudulent use of secure USUIDs even if a rogue agent has accessed an outdated USUID. In some embodiments, the USUID and timestamp may be included as part of the JSON Web Token (JWT) payload sent from the underlying service to the client service.
[14] Разработчики установили, что благодаря использованию идентификаторов USUID согласно настоящей технологии возможна аутентификация пользователя в клиентском сервисе через базовый сервис без запроса у пользователя дополнительной информации для аутентификации.[14] The developers have established that thanks to the use of USUID identifiers according to this technology, it is possible to authenticate the user in the client service through the basic service without asking the user for additional information for authentication.
[15] Согласно первому аспекту настоящей технологии реализован способ аутентификации возможного пользователя, связанного с первым сервисом и со вторым сервисом. Первый сервис и второй сервис выполняются на соответствующих серверах серверной части (backend). Электронное устройство возможного пользователя способно связываться с соответствующими серверами серверной части с использованием сети связи. Способ включает в себя получение в данный момент времени вторым сервисом от первого сервиса запроса возможного идентификатора USUID, связанного с возможным пользователем, который в текущий момент времени пытается получить доступ к первому сервису. Первый сервис связан с уникальным идентификатором сервиса (SUID, Service Unique ID). Возможный идентификатор USUID уникален для пары «возможный пользователь - первый сервис». Идентификатор SUID уникален для первого сервиса. Если пользователь ранее был аутентифицирован во втором сервисе, способ включает в себя формирование вторым сервисом в данный момент времени возможного идентификатора USUID путем шифрования (а) информации о пользователе для возможного пользователя, аутентифицирующей возможного пользователя во втором сервисе, и (б) идентификатора SUID. Способ включает в себя получение в данный момент времени первым сервисом от второго сервиса токена, указывающего на возможный идентификатор USUID и сигнатуру. Способ включает в себя в ответ на подтверждение достоверности сигнатуры сравнение в данный момент времени возможного идентификатора USUID, полученного в данный момент времени, с целевым идентификатором USUID, связанным с целевым пользователем первого сервиса и полученным в другой момент времени. Другой момент времени предшествует данному моменту времени. Если возможный идентификатор USUID совпадает с целевым идентификатором USUID, способ включает в себя аутентификацию в данный момент времени первым сервисом возможного пользователя как целевого пользователя без запроса у возможного пользователя дополнительной информации.[15] According to a first aspect of the present technology, a method is implemented for authenticating a possible user associated with a first service and a second service. The first service and the second service are executed on the corresponding backend servers. The potential user's electronic device is capable of communicating with corresponding backend servers using a communications network. The method includes the second service receiving, at a given time, from the first service a request for a possible USUID associated with a possible user who is currently attempting to access the first service. The first service is associated with a unique service identifier (SUID, Service Unique ID). The candidate USUID is unique to the candidate-first service pair. The SUID is unique to the first service. If the user has previously been authenticated to the second service, the method includes generating, by the second service at a given time, a candidate USUID by encrypting (a) user information for the candidate user authenticating the candidate user to the second service, and (b) the SUID. The method includes the first service receiving, at a given time, from the second service a token indicating a possible USUID and signature. The method includes, in response to validating the signature, comparing at a given point in time a possible USUID received at a given point in time with a target USUID associated with a target user of the first service and received at a different point in time. Another point in time precedes this point in time. If the candidate USUID matches the target USUID, the method includes the first service authenticating the candidate user as the target user at a given time without prompting the candidate user for additional information.
[16] В некоторых вариантах осуществления способа целевой пользователь был аутентифицирован первым сервисом в другой момент времени, а целевой идентификатор USUID был сохранен первым сервисом при аутентификации в другой момент времени.[16] In some embodiments of the method, the target user was authenticated by the first service at a different point in time, and the target USUID was stored by the first service when authenticated at a different point in time.
[17] В некоторых вариантах осуществления способа целевой пользователь был непосредственно аутентифицирован первым сервисом.[17] In some embodiments of the method, the target user was directly authenticated by the first service.
[18] В некоторых вариантах осуществления способа целевой пользователь был косвенно аутентифицирован первым сервисом во втором сервисе.[18] In some embodiments of the method, the target user has been indirectly authenticated by the first service to the second service.
[19] В некоторых вариантах осуществления способа шифрование включает в себя шифрование вторым сервисом информации о пользователе с использованием первого секретного ключа и идентификатора SUID в качестве вектора инициализации для алгоритма «счетчик с аутентификацией Галуа» (GCM, Galois/Counter Mode).[19] In some embodiments of the method, the encryption includes the second service encrypting the user information using the first secret key and SUID as an initialization vector for the Galois/Counter Mode (GCM) algorithm.
[20] В некоторых вариантах осуществления способа он дополнительно включает в себя формирование вторым сервисом сигнатуры с использованием второго секретного ключа и алгоритма «хеш-код аутентификации сообщений» (HMAC, Hash Message Authentication Code).[20] In some embodiments of the method, it further includes generating a signature by the second service using the second secret key and the Hash Message Authentication Code (HMAC) algorithm.
[21] В некоторых вариантах осуществления способа токен представляет собой токен JWT, содержащий область заголовка, область полезных данных и область сигнатуры. Идентификатор USUID вставляется в область полезных данных, а сигнатура вставляется в область сигнатуры.[21] In some embodiments of the method, the token is a JWT token comprising a header area, a payload area, and a signature area. The USUID is inserted into the payload area and the signature is inserted into the signature area.
[22] В некоторых вариантах осуществления способа в область полезных данных дополнительно вставляется значение отметки времени, при этом отметка времени указывает на период действия идентификатора USUID.[22] In some embodiments of the method, a timestamp value is further inserted into the payload area, wherein the timestamp indicates the validity period of the USUID.
[23] В некоторых вариантах осуществления способа первый сервис и второй сервис имеют одного и того же оператора.[23] In some embodiments of the method, the first service and the second service have the same operator.
[24] В некоторых вариантах осуществления способа оператор первого сервиса отличается от оператора второго сервиса.[24] In some embodiments of the method, the operator of the first service is different from the operator of the second service.
[25] Согласно второму аспекту настоящей технологии реализована система для аутентификации возможного пользователя, связанного с первым сервисом и со вторым сервисом. Первый сервис и второй сервис системы выполняются на соответствующих серверах серверной части. Электронное устройство возможного пользователя способно связываться с соответствующими серверами серверной части с использованием сети связи. Система выполнена с возможностью получения в данный момент времени вторым сервисом от первого сервиса запроса возможного идентификатора USUID, связанного с возможным пользователем, который в текущий момент времени пытается получить доступ к первому сервису, связанному с идентификатором SUID, при этом возможный идентификатор USUID уникален для пары «возможный пользователь - первый сервис», а идентификатор SUID уникален для первого сервиса. Система выполнена с возможностью формирования вторым сервисом в данный момент времени возможного идентификатора USUID путем шифрования (а) информации о пользователе для возможного пользователя, аутентифицирующей возможного пользователя во втором сервисе, и (б) идентификатора SUID, если пользователь ранее был аутентифицирован во втором сервисе. Система выполнена с возможностью получения в данный момент времени первым сервисом от второго сервиса токена, указывающего на возможный идентификатор USUID и сигнатуру. Система способна в ответ на подтверждение достоверности сигнатуры сравнивать в данный момент времени возможный идентификатор USUID, полученный в данный момент времени, с целевым идентификатором USUID, связанным с целевым пользователем первого сервиса и полученным в другой момент времени, предшествующий данному моменту времени. Система выполнена с возможностью аутентификации в данный момент времени первым сервисом возможного пользователя как целевого пользователя без запроса у возможного пользователя дополнительной информации, если возможный идентификатор USUID совпадает с целевым идентификатором USUID.[25] According to a second aspect of the present technology, a system is implemented for authenticating a possible user associated with a first service and a second service. The first service and the second service of the system are executed on the corresponding servers of the back-end. The potential user's electronic device is capable of communicating with corresponding backend servers using a communications network. The system is configured to receive, at a given time, a second service from a first service requesting a possible USUID associated with a possible user who is currently attempting to access the first service associated with a SUID, wherein the possible USUID is unique to the pair " possible user - first service" and the SUID is unique to the first service. The system is configured to generate, at a given time, a candidate USUID by the second service by encrypting (a) user information for the candidate user authenticating the candidate user to the second service, and (b) a SUID if the user has previously been authenticated to the second service. The system is configured to receive, at a given time, the first service from the second service a token indicating a possible USUID and signature. The system is capable, in response to the validity of the signature, by comparing at a given point in time a possible USUID received at a given point in time with a target USUID associated with a target user of the first service and received at another point in time prior to that point in time. The system is configured to authenticate a candidate user as a target user at a given time by the first service without prompting the candidate for additional information if the candidate USUID matches the target USUID.
[26] В некоторых вариантах осуществления системы целевой пользователь был аутентифицирован первым сервисом в другой момент времени, а целевой идентификатор USUID был сохранен первым сервисом при аутентификации в другой момент времени.[26] In some system embodiments, the target user was authenticated by the first service at a different point in time, and the target USUID was stored by the first service when authenticated at a different point in time.
[27] В некоторых вариантах осуществления системы целевой пользователь был непосредственно аутентифицирован первым сервисом.[27] In some system embodiments, the target user was directly authenticated by the first service.
[28] В некоторых вариантах осуществления системы целевой пользователь был косвенно аутентифицирован первым сервисом во втором сервисе.[28] In some system embodiments, the target user has been indirectly authenticated by the first service to the second service.
[29] В некоторых вариантах осуществления системы возможность шифрования включает в себя возможность шифрования вторым сервисом информации о пользователе с использованием первого секретного ключа и идентификатора SUID в качестве вектора инициализации для алгоритма GCM.[29] In some system embodiments, the encryption capability includes the ability for the second service to encrypt user information using the first secret key and SUID as an initialization vector for the GCM algorithm.
[30] В некоторых вариантах осуществления системы она дополнительно выполнена с возможностью формирования вторым сервисом сигнатуры с использованием второго секретного ключа в алгоритме HMAC.[30] In some embodiments of the system, it is further configured to generate a signature by the second service using the second secret key in the HMAC algorithm.
[31] В некоторых вариантах осуществления системы токен представляет собой токен JWT, содержащий область заголовка, область полезных данных и область сигнатуры, при этом идентификатор USUID вставлен в область полезных данных, а сигнатура вставлена в область сигнатуры.[31] In some embodiments of the system, the token is a JWT token comprising a header area, a payload area, and a signature area, wherein the USUID is inserted into the payload area and the signature is inserted into the signature area.
[32] В некоторых вариантах осуществления системы значение отметки времени дополнительно вставлено в область полезных данных, при этом отметка времени указывает на период действия идентификатора USUID.[32] In some system embodiments, a timestamp value is further inserted into the payload area, wherein the timestamp indicates the validity period of the USUID.
[33] В некоторых вариантах осуществления системы первый сервис и второй сервис имеют одного и того же оператора.[33] In some system embodiments, the first service and the second service have the same operator.
[34] В некоторых вариантах осуществления системы оператор первого сервиса отличается от оператора второго сервиса.[34] In some embodiments of the system, the operator of the first service is different from the operator of the second service.
[35] Согласно различным вариантам осуществления настоящей технологии реализован машиночитаемый физический носитель информации, хранящий программные команды для аутентификации пользователя сервиса, имеющего учетную запись, связанную с системой базового веб-сервиса, при этом программные команды исполняются процессором компьютерной системы с целью выполнения одного или нескольких вышеупомянутых способов.[35] According to various embodiments of the present technology, a machine-readable physical storage medium is implemented that stores program instructions for authenticating a service user having an account associated with an underlying web service system, wherein the program instructions are executed by a processor of the computer system to perform one or more of the above ways.
[36] Согласно различным вариантам осуществления настоящей технологии реализована компьютерная система, содержащая по меньшей мере один процессор и память, в которой хранятся программные команды для аутентификации пользователя сервиса, имеющего учетную запись, связанную с системой базового веб-сервиса, при этом программные команды исполняются одним или несколькими процессорами компьютерной системы с целью выполнения одного или нескольких вышеупомянутых способов.[36] According to various embodiments of the present technology, a computer system is implemented comprising at least one processor and memory that stores program instructions for authenticating a service user having an account associated with an underlying web service system, wherein the program instructions are executed by one or multiple processors of a computer system for the purpose of performing one or more of the above methods.
[37] В контексте настоящего описания, если явно не указано иное, под электронным устройством, компьютерной системой и системой веб-сервиса понимаются любые аппаратные и/или программные средства, подходящие для решения поставленной задачи. Таким образом, некоторые не имеющие ограничительного характера примеры аппаратных и/или программных средств включают в себя компьютеры (серверы, настольные, ноутбуки, нетбуки и т.п.), смартфоны, планшеты, сетевое оборудование (маршрутизаторы, коммутаторы, шлюзы и т.п.) и/или их сочетания.[37] As used herein, unless otherwise expressly stated, electronic device, computer system, and web service system refer to any hardware and/or software suitable for performing the task at hand. Thus, some non-limiting examples of hardware and/or software include computers (servers, desktops, laptops, netbooks, etc.), smartphones, tablets, network equipment (routers, switches, gateways, etc. .) and/or combinations thereof.
[38] В контексте настоящего описания, если явно не указано иное, выражения «пригодная для чтения компьютером среда» и «память» включают в себя носители любого типа, в качестве не имеющих ограничительного характера примеров которых можно привести оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), диски (CD-ROM, DVD, гибкие диски, жесткие диски и т.д.), USB-накопители, карты флэш-памяти, твердотельные накопители и накопители на магнитных лентах.[38] As used herein, unless expressly stated otherwise, the expressions “machine readable medium” and “memory” include any type of media, non-limiting examples of which include random access memory (RAM), read-only memory (ROM), disks (CD-ROM, DVD, floppy disk, hard disk, etc.), USB flash drives, flash memory cards, solid-state drives, and tape drives.
[39] В контексте настоящего описания, если явно не указано иное, в качестве указания на информационный элемент может выступать сам информационный элемент, а также указатель, ссылка, гиперссылка или другое косвенное средство, с помощью которого получатель данных может найти место в сети, памяти, базе данных или на другом машиночитаемом носителе информации, откуда можно извлечь этот информационный элемент. Например, указание на файл может включать в себя сам файл (т.е. его содержимое) или это указание может представлять собой уникальный дескриптор файла, указывающий на файл в определенной файловой системе, или какие-либо другие средства для указания получателю данных места в сети, адреса памяти, таблицы в базе данных или другого места, где можно получить доступ к файлу. Специалисту в данной области должно быть понятно, что степень точности, требуемая для такого указания, зависит от объема предварительных знаний относительно интерпретации информации, которой обмениваются отправитель и получатель данных. Например, если перед началом обмена данными между отправителем и получателем известно, что указание на информационный элемент представляет собой ключ базы данных для элемента в определенной таблице заранее заданной базы данных, содержащей информационный элемент, то для эффективной передачи этого информационного элемента получателю достаточно оправить ключ базы данных, даже если сам информационный элемент не передается между отправителем и получателем данных.[39] As used herein, unless explicitly stated otherwise, an indication of an information element may be the information element itself, as well as a pointer, link, hyperlink, or other indirect means by which a recipient of the data can locate a location in a network, memory , database or other machine-readable storage medium from which this information element can be retrieved. For example, a file reference may include the file itself (i.e., its contents), or it may be a unique file descriptor pointing to a file on a particular file system, or some other means of indicating a location on a network to the recipient of the data. , addresses in memory, a table in a database, or other location where the file can be accessed. One skilled in the art will appreciate that the degree of accuracy required for such an indication depends on the amount of prior knowledge regarding the interpretation of the information exchanged between the sender and recipient of the data. For example, if it is known before communication between the sender and the recipient that the information element reference represents the database key for the element in a certain table of a predefined database containing the information element, then in order to effectively transmit that information element to the recipient, it is sufficient to send the database key , even if the information element itself is not transmitted between the sender and recipient of the data.
[40] В контексте настоящего описания, если явно не указано иное, числительные «первый», «второй», «третий» и т.д. используются лишь для указания на различие между существительными, к которым они относятся, но не для описания каких-либо определенных взаимосвязей между этими существительными. Например, должно быть понятно, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо определенного порядка, типа, хронологии, иерархии или классификации, в данном случае, серверов, а также что их использование (само по себе) не подразумевает наличие «второго сервера» в любой ситуации. Кроме того, как встречается в настоящем описании в другом контексте, ссылка на «первый» элемент и «второй» элемент не исключает того, что эти два элемента в действительности могут быть одним и тем же элементом. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут представлять собой одно и то же программное и/или аппаратное средство, а в других случаях - различные программные и/или аппаратные средства.[40] In the context of this description, unless expressly stated otherwise, the numerals “first”, “second”, “third”, etc. are used only to indicate differences between the nouns they refer to, but not to describe any specific relationships between those nouns. For example, it should be clear that the use of the terms "first server" and "third server" does not imply any particular order, type, chronology, hierarchy or classification, in this case, of servers, nor that their use (in itself) does not imply the presence of a “second server” in any situation. Moreover, as occurs herein in other contexts, reference to a “first” element and a “second” element does not preclude the fact that the two elements may in fact be the same element. Thus, for example, in some cases the “first” server and the “second” server may be the same software and/or hardware, and in other cases different software and/or hardware.
[41] Каждый вариант осуществления настоящей технологии относится к по меньшей мере одной из вышеупомянутых целей и/или аспектов, но не обязательно ко всем ним. Должно быть понятно, что некоторые аспекты настоящей технологии, связанные с попыткой достижения вышеупомянутой цели, могут не соответствовать этой цели и/или могут соответствовать другим целям, явным образом здесь не упомянутым.[41] Each embodiment of the present technology relates to at least one of the above-mentioned objectives and/or aspects, but not necessarily all of them. It should be understood that some aspects of the present technology associated with attempting to achieve the above purpose may not be consistent with that purpose and/or may be consistent with other purposes not expressly mentioned herein.
[42] Дополнительные и/или альтернативные признаки, аспекты и преимущества вариантов осуществления настоящей технологии содержатся в дальнейшем описании, в приложенных чертежах и в формуле изобретения.[42] Additional and/or alternative features, aspects and advantages of embodiments of the present technology are set forth in the following description, the accompanying drawings, and the claims.
Краткое описание чертежейBrief description of drawings
[43] Дальнейшее описание приведено для лучшего понимания настоящей технологии, а также других аспектов и их признаков, и должно использоваться совместно с приложенными чертежами.[43] The following description is provided for a better understanding of the present technology, as well as other aspects and their features, and should be used in conjunction with the accompanying drawings.
[44] На фиг. 1 представлена схема компьютерной системы, пригодной для реализации настоящей технологии и/или для использования с вариантами осуществления настоящей технологии.[44] In FIG. 1 is a diagram of a computer system suitable for implementing the present technology and/or for use with embodiments of the present technology.
[45] На фиг. 2 представлена схема сетевой вычислительной среды, пригодной для использования с некоторыми вариантами осуществления настоящей технологии.[45] In FIG. 2 is a diagram of a network computing environment suitable for use with certain embodiments of the present technology.
[46] На фиг. 3 представлена схема системы веб-сервиса, пригодной для использования с некоторыми вариантами осуществления настоящей технологии.[46] In FIG. 3 is a diagram of a web service system suitable for use with some embodiments of the present technology.
[47] На фиг. 4 представлена схема компьютерного способа аутентификации возможного пользователя при прямом обращении к системе первого сервиса в данный момент времени согласно некоторым вариантам осуществления настоящей технологии.[47] In FIG. 4 is a diagram of a computer method for authenticating a possible user when directly accessing a first service system at a given time, according to some embodiments of the present technology.
[48] На фиг. 5 представлена схема компьютерного способа аутентификации возможного пользователя при косвенном обращении к системе первого сервиса в данный момент времени через систему второго сервиса согласно некоторым вариантам осуществления настоящей технологии.[48] In FIG. 5 is a diagram of a computer method for authenticating a possible user when indirectly accessing a first service system at a given time through a second service system, according to some embodiments of the present technology.
[49] На фиг. 6 представлена схема компьютерного способа аутентификации возможного пользователя в случае обращения к системе первого сервиса в другой момент времени согласно некоторым вариантам осуществления настоящей технологии.[49] In FIG. 6 is a diagram of a computer method for authenticating a possible user if the first service system is accessed at a different point in time, according to some embodiments of the present technology.
[50] На фиг. 7 представлена подробная схема выполнения компьютерного способа согласно фиг. 6.[50] In FIG. 7 shows a detailed flow diagram of the computer method according to FIG. 6.
[51] На фиг. 8 представлена блок-схема способа, выполняемого системой для аутентификации возможного пользователя, согласно некоторым вариантам осуществления настоящей технологии.[51] In FIG. 8 is a flow diagram of a method performed by a system to authenticate a possible user, according to some embodiments of the present technology.
[52] Также следует отметить, что на чертежах не соблюдается масштаб, если явно не указано иное.[52] It should also be noted that drawings are not to scale unless expressly stated otherwise.
Осуществление изобретенияCarrying out the invention
[53] Представленные здесь примеры и условный язык предназначены для обеспечения лучшего понимания принципов настоящей технологии, а не для ограничения ее объема до таких специально приведенных примеров и условий. Очевидно, что специалисты в данной области техники способны разработать различные способы и устройства, которые явно не описаны и не показаны, но реализуют принципы настоящей технологии в пределах ее существа и объема.[53] The examples and conventional language presented here are intended to provide a better understanding of the principles of this technology and not to limit its scope to such specifically provided examples and conditions. It is obvious that those skilled in the art are capable of developing various methods and devices that are not explicitly described or shown, but implement the principles of the present technology within its spirit and scope.
[54] Кроме того, чтобы способствовать лучшему пониманию, последующее описание может содержать упрощенные варианты реализации настоящей технологии. Специалистам в данной области должно быть понятно, что другие варианты осуществления настоящей технологии могут быть значительно сложнее.[54] In addition, to facilitate a better understanding, the following description may contain simplified embodiments of the present technology. Those skilled in the art will appreciate that other embodiments of the present technology may be significantly more complex.
[55] В некоторых случаях приводятся полезные примеры модификаций настоящей технологии. Они способствуют пониманию, но также не определяют объема или границ настоящей технологии. Представленный перечень модификаций не является исчерпывающим и специалист в данной области может разработать другие модификации в пределах объема настоящей технологии. Кроме того, если в некоторых случаях модификации не описаны, это не означает, что они невозможны и/или что описание содержит единственно возможный вариант реализации того или иного элемента настоящей технологии.[55] In some cases, useful examples of modifications to the present technology are provided. They promote understanding, but also do not define the scope or boundaries of the actual technology. The presented list of modifications is not exhaustive and a person skilled in the art may develop other modifications within the scope of this technology. In addition, if in some cases modifications are not described, this does not mean that they are impossible and/or that the description contains the only possible implementation of a particular element of this technology.
[56] Описание принципов, аспектов и вариантов реализации настоящей технологии, а также их конкретные примеры предназначены для охвата их структурных и функциональных эквивалентов, независимо от того, известны они в настоящее время или будут разработаны в будущем. Например, специалистам в данной области техники должно быть понятно, что любые описанные здесь структурные схемы соответствуют концептуальным представлениям иллюстративных принципиальных схем, реализующих основы настоящей технологии. Также должно быть понятно, что любые блок-схемы, схемы процессов, диаграммы изменения состояния, псевдокоды и т.п. соответствуют различным процессам, которые могут быть представлены на машиночитаемом физическом носителе информации и могут выполняться компьютером или процессором, независимо от того, показан такой компьютер или процессор явно или нет.[56] The descriptions of the principles, aspects and embodiments of this technology, as well as specific examples thereof, are intended to cover their structural and functional equivalents, whether currently known or hereafter developed. For example, those skilled in the art will appreciate that any block diagrams described herein correspond to the conceptual representations of illustrative circuit diagrams implementing the fundamentals of the present technology. It should also be clear that any flowcharts, process diagrams, state transition diagrams, pseudo codes, etc. correspond to various processes that may be represented on a computer-readable physical storage medium and may be performed by a computer or processor, whether such computer or processor is explicitly shown or not.
[57] Функции различных элементов, показанных на чертежах, включая любой функциональный блок, обозначенный как «процессор», могут быть реализованы с использованием специализированных аппаратных средств, а также аппаратных средств, способных выполнять соответствующее программное обеспечение. Если используется процессор, эти функции могут выполняться одним выделенным процессором, одним совместно используемым процессором или множеством отдельных процессоров, некоторые из которых могут использоваться совместно. Кроме того, явное использование термина «процессор» или «контроллер» не должно трактоваться как указание исключительно на аппаратные средства, способные выполнять программное обеспечение, и может подразумевать, помимо прочего, аппаратные средства цифрового сигнального процессора (DSP), сетевой процессор, специализированную интегральную схему (ASIC), программируемую вентильную матрицу (FPGA), ПЗУ для хранения программного обеспечения, ОЗУ и энергонезависимое запоминающее устройство. Также могут подразумеваться другие аппаратные средства, общего назначения и/или заказные.[57] The functions of the various elements shown in the drawings, including any functional block designated as a "processor", may be implemented using dedicated hardware as well as hardware capable of executing associated software. If a processor is used, these functions may be performed by one dedicated processor, one shared processor, or a plurality of separate processors, some of which may be shared. In addition, explicit use of the term "processor" or "controller" should not be construed as referring solely to hardware capable of executing software and may include, but is not limited to, digital signal processor (DSP) hardware, network processor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), ROM for software storage, RAM and non-volatile storage device. Other hardware, general purpose and/or custom, may also be included.
[58] Программные модули или просто модули, реализация которых предполагается в виде программных средств, могут быть представлены здесь как любое сочетание элементов блок-схемы или других элементов, указывающих на выполнение шагов процесса и/или содержащих текстовое описание. Такие модули могут выполняться аппаратными средствами, показанными явно или подразумеваемыми.[58] Software modules, or simply modules that are intended to be implemented in software, may be represented here as any combination of flowchart elements or other elements indicating the execution of process steps and/or containing a textual description. Such modules may be executed by hardware, shown explicitly or implicitly.
[59] Далее с учетом вышеизложенных принципов рассмотрены некоторые не имеющие ограничительного характера примеры, иллюстрирующие различные варианты реализации аспектов настоящей технологии.[59] Following the principles outlined above, some non-limiting examples are provided to illustrate various embodiments of aspects of the present technology.
[60] На фиг. 1 приведена компьютерная система 100, пригодная для использования в некоторых вариантах реализации настоящей технологии и содержащая различные аппаратные элементы, включая один или несколько одно- или многоядерных процессоров, обобщенно представленных процессором 110, твердотельный накопитель120, ОЗУ 130, интерфейс 140 дисплея и интерфейс 150 ввода-вывода.[60] In FIG. 1 illustrates a computer system 100 suitable for use in certain embodiments of the present technology and comprising various hardware elements, including one or more single or multi-core processors, generally represented by processor 110, solid state drive 120, RAM 130, display interface 140, and input interface 150. output.
[61] Связь между различными элементами компьютерной системы 100 может осуществляться через одну или несколько внутренних и/или внешних шин 160 (таких как шина PCI, шина USB, шина FireWire стандарта IEEE 1394, шина SCSI, шина Serial-ATA и т.д.), с которыми различные аппаратные элементы соединены электронными средствами. Интерфейс 140 дисплея может быть связан с монитором 142 (например, HDMI-кабелем 144), который виден пользователю 170 сервиса (также называется пользователем сервиса). Интерфейс 150 ввода-вывода может быть связан с клавиатурой 151 (например, USB-кабелем 153) и мышью 152 (например, USB-кабелем 154), при этом клавиатуру 151 и мышь 152 может использовать пользователь 170 сервиса.[61] Communication between various elements of the computer system 100 may occur through one or more internal and/or external buses 160 (such as a PCI bus, a USB bus, an IEEE 1394 FireWire bus, a SCSI bus, a Serial-ATA bus, etc. ) to which various hardware elements are connected electronically. Display interface 140 may be coupled to a monitor 142 (eg, HDMI cable 144) that is visible to service user 170 (also referred to as service user). The I/O interface 150 may be coupled to a keyboard 151 (eg, USB cable 153) and a mouse 152 (eg, USB cable 154), where the keyboard 151 and mouse 152 can be used by a service user 170.
[62] Согласно вариантам осуществления настоящей технологии, твердотельный накопитель 120 хранит программные команды, пригодные для загрузки в ОЗУ 130 и исполнения процессором 110 для аутентификации возможного пользователя, имеющего учетную запись, связанную с системой базового веб-сервиса. Программные команды могут, например, входить в состав библиотеки или приложения.[62] According to embodiments of the present technology, the solid state drive 120 stores software instructions suitable for loading into the RAM 130 and execution by the processor 110 to authenticate a possible user having an account associated with the underlying web service system. Program instructions may, for example, be part of a library or application.
[63] На фиг. 2 представлена сетевая вычислительная среда 200, пригодная для использования с некоторыми вариантами осуществления настоящей технологии и содержащая систему первого веб-сервиса 202, систему второго веб-сервиса 204, пользовательское устройство 208 и сеть 206, обеспечивающую связь этих систем.[63] In FIG. 2 illustrates a networked computing environment 200 suitable for use with certain embodiments of the present technology, comprising a first web service system 202, a second web service system 204, a user device 208, and a network 206 connecting these systems.
[64] Система первого веб-сервиса 202 и система второго веб-сервиса 204 могут представлять собой системы, обеспечивающие веб-сервисы для одного или нескольких пользователей 170 сервисов, взаимодействующих с системой первого веб-сервиса 202 и/или с системой второго веб-сервиса 204 через пользовательское устройство 208. Например, система первого веб-сервиса 202 и/или система второго веб-сервиса 204 могут, в числе прочего, включать в себя систему социальной сети (например, Facebook™, VK™), систему сервиса электронной почты (например, Gmail™, Yandex.Mail™), сервис управления учетными записями (например, Yandex.Passport™), сервис хранения информации (например, Evernote™), систему веб-сервиса для блогов (например, Twitter™) или систему сервиса электронной торговли (например, Amazon™, Expedia™).[64] The first web service system 202 and the second web service system 204 may be systems providing web services to one or more service users 170 interacting with the first web service system 202 and/or the second web service system 204 through the user device 208. For example, the first web service system 202 and/or the second web service system 204 may include, among other things, a social networking system (e.g., Facebook™, VK™), an email service system ( e.g. Gmail™, Yandex.Mail™), account management service (e.g. Yandex.Passport™), information storage service (e.g. Evernote™), web service system for blogs (e.g. Twitter™) or email service system trade (eg Amazon™, Expedia™).
[65] Должно быть понятно, что в некоторых не имеющих ограничительного характера вариантах осуществления изобретения система первого веб-сервиса 202 и система второго веб-сервиса 204 могут представлять собой часть общей системы веб-сервиса, обеспечивающей по меньшей мере два различных веб-сервиса. В этом примере системы первого и второго веб-сервисов 202 и 204 могут находиться в собственности и/или управляться одним и тем же лицом и/или обеспечивать два различных веб-сервиса, размещенные в общем домене (например, система сервиса электронной почты Yandex.Mail™, представляющая собой первый веб-сервис, и сервис управления учетными записями Yandex.Passport™, представляющий собой второй веб-сервис, размещены в общем домене Yandex).[65] It should be understood that in some non-limiting embodiments of the invention, the first web service system 202 and the second web service system 204 may be part of an overall web service system providing at least two different web services. In this example, the first and second web service systems 202 and 204 may be owned and/or operated by the same entity and/or provide two different web services hosted on a common domain (for example, the Yandex.Mail email service system ™, which is the first web service, and the Yandex.Passport™ account management service, which is the second web service, are hosted in a common Yandex domain).
[66] И наоборот, в некоторых других не имеющих ограничительного характера вариантах осуществления изобретения система первого веб-сервиса 202 и система второго веб-сервиса 204 могут представлять собой части различных систем веб-сервисов, обеспечивающих по меньшей мере два различных веб-сервиса. В этом примере системы первого и второго веб-сервисов 202 и 204 могут находиться в собственности и/или управляться различными лицами и/или обеспечивать два различных веб-сервиса, размещенных в различных доменах (например, система сервиса электронной почты Yandex.Mail™, представляющая собой первый веб-сервис, и система сервиса электронной торговли Amazon™, представляющая собой второй веб-сервис, размещены в различных доменах Yandex и Amazon).[66] Conversely, in some other non-limiting embodiments of the invention, the first web service system 202 and the second web service system 204 may be parts of different web services systems providing at least two different web services. In this example, the first and second web services systems 202 and 204 may be owned and/or operated by different entities and/or provide two different web services hosted in different domains (for example, the Yandex.Mail™ email service system representing is the first web service, and the Amazon™ e-commerce service system, which is the second web service, are hosted in different Yandex and Amazon domains).
[67] Должно быть понятно, что в некоторых других не имеющих ограничительного характера вариантах осуществления изобретения и система первого веб-сервиса 202, и система второго веб-сервиса 204 могут содержать один или несколько веб-сервисов. Например, система первого веб-сервиса 202 может содержать систему сервиса электронной почты (Yandex.Mail™) и сервис управления учетными записями (например, Yandex.Passport™), а второй веб-сервис может содержать сервис хранения информации (например, Evernote™) и/или систему сервиса электронной торговли (например, Expedia™). Должно быть понятно, что в некоторых не имеющих ограничительного характера вариантах осуществления изобретения система первого веб-сервиса 202 может называться системой стороннего веб-сервиса, а система второго веб-сервиса 204 может называться системой базового веб-сервиса, а в некоторых других не имеющих ограничительного характера вариантах осуществления изобретения система первого веб-сервиса 202 может называться системой базового веб-сервиса, а система второго веб-сервиса 204 может называться системой стороннего веб-сервиса[67] It should be understood that in some other non-limiting embodiments of the invention, both the first web service system 202 and the second web service system 204 may contain one or more web services. For example, the system of the first web service 202 may contain an email service system (Yandex.Mail™) and an account management service (for example, Yandex.Passport™), and the second web service may contain an information storage service (for example, Evernote™) and/or an e-commerce service system (such as Expedia™). It should be understood that in some non-limiting embodiments of the invention, the first web service system 202 may be referred to as a third-party web service system, and the second web service system 204 may be referred to as a core web service system, and in some other non-limiting embodiments In embodiments of the invention, the first web service system 202 may be referred to as a core web service system, and the second web service system 204 may be referred to as a third party web service system
[68] Системы первого и второго веб-сервисов 202 и 204 могут содержать один или несколько серверов. Каждый сервер может содержать внутренние аппаратные элементы, включая один или несколько одно- или многоядерных процессоров, обобщенно называемых процессором 110, и ОЗУ 130, которые аналогичны подобным образом обозначенным аппаратным элементам компьютерной системы 100, представленной на фиг. 1, а также сетевой интерфейс (не показан) для связи через сеть 206.[68] The first and second web services systems 202 and 204 may comprise one or more servers. Each server may include internal hardware elements, including one or more single- or multi-core processors, collectively referred to as processor 110, and RAM 130, which are similar to the similarly designated hardware elements of the computer system 100 illustrated in FIG. 1, as well as a network interface (not shown) for communication via network 206.
[69] Пользовательское устройство 208 может взаимодействовать с системой первого веб-сервиса 202 и/или с системой второго веб-сервиса 204 путем получения входных данных от пользователя 170 сервиса, а также путем получения и отправки данных через сеть 206. Например, пользовательское устройство 208 может, в числе прочего, представлять собой настольный компьютер, ноутбук, смартфон (например, Apple iPhone™ или Samsung Galaxy S5™), карманный персональный компьютер или любое другое устройство, обеспечивающее функции обработки и обмена данными. Пользовательское устройство 208 может содержать внутренние аппаратные элементы, включая один или несколько одно- или многоядерных процессоров, обобщенно называемых процессором 110, и ОЗУ 130, которые аналогичны подобным образом обозначенным аппаратным элементам компьютерной системы 100, представленной на фиг. 1, а также сетевой интерфейс (не показан) для связи через сеть 206 с первым и вторым веб-сервисами 202 и 204.[69] The user device 208 may interact with the first web service system 202 and/or the second web service system 204 by receiving input from the service user 170 and by receiving and sending data through the network 206. For example, the user device 208 may be, but is not limited to, a desktop computer, laptop, smartphone (such as an Apple iPhone™ or Samsung Galaxy S5™), personal digital assistant, or any other device that provides data processing and communication functions. User device 208 may include internal hardware elements, including one or more single- or multi-core processors, collectively referred to as processor 110, and RAM 130, which are similar to similarly designated hardware elements of the computer system 100 illustrated in FIG. 1, as well as a network interface (not shown) for communication via network 206 with first and second web services 202 and 204.
[70] В одном не имеющем ограничительного характера варианте осуществления изобретения пользовательское устройство 208 отображает контент из систем первого и/или второго веб-сервисов 202, 204 путем обработки документа 214 на языке разметки, полученного от систем первого и/или второго веб-сервиса 202, 204. Документ 214 на языке разметки указывает на контент и на одну или несколько команд, описывающих форматирование или представление контента. Путем исполнения команд, содержащихся в документе 214 на языке разметки, браузерное приложение 210 отображает указанный контент с использованием формата или представления, описанного в документе 214 на языке разметки. В различных вариантах осуществления изобретения документ 214 на языке разметки содержит файл данных, содержащий данные на расширяемом языке разметки (XML, Extensible Markup Language), данные на расширяемом языке разметки гипертекста (XHTML, Extensible Hypertext Markup Language) или данные на другом языке разметки.[70] In one non-limiting embodiment of the invention, user device 208 displays content from first and/or second web service systems 202, 204 by processing a markup language document 214 received from first and/or second web service systems 202 , 204. The markup language document 214 indicates the content and one or more commands describing the formatting or presentation of the content. By executing the commands contained in the markup language document 214, the browser application 210 displays the specified content using the format or presentation described in the markup language document 214. In various embodiments of the invention, the markup language document 214 contains a data file containing data in Extensible Markup Language (XML), data in Extensible Hypertext Markup Language (XHTML), or data in another markup language.
[71] В других не имеющих ограничительного характера вариантах осуществления изобретения пользовательское устройство 208 может также содержать куки-файл 212, содержащий данные, указывающие на то, вошел ли пользователь 170 сервиса пользовательского устройства 208 в систему второго веб-сервиса 204. Куки-файл 212 может указывать на то, участвует ли пользователь 170 сервиса в активном сеансе, в котором пользовательское устройство 208 обменивается данными с системой второго веб-сервиса 204, если пользователь 170 сервиса имеет учетную запись, связанную с системой второго веб-сервиса 204.[71] In other non-limiting embodiments of the invention, the user device 208 may also include a cookie 212 containing data indicating whether the service user 170 of the user device 208 is logged into the second web service 204. Cookie 212 may indicate whether the service user 170 is participating in an active session in which the user device 208 is communicating with the second web service system 204 if the service user 170 has an account associated with the second web service system 204.
[72] Предполагается, что система веб-сервиса может содержать серверную часть (backend) и пользовательскую часть (frontend). Пользовательская часть веб-сервиса может, например, выполняться электронным устройством, связанным с пользователем. Пользовательская часть может обеспечивать интерфейс GUI пользователю для взаимодействия с веб-сервисом. В некоторых вариантах осуществления изобретения загружаемое приложение, предназначенное для веб-сервиса, может быть включено в состав пользовательской части веб-сервиса. Возможная реализация серверной части системы веб-сервиса описана ниже со ссылкой на фиг. 3.[72] It is assumed that the web service system may contain a server part (backend) and a user part (frontend). The user portion of the web service may, for example, be executed by an electronic device associated with the user. The user part may provide a GUI interface to the user to interact with the web service. In some embodiments of the invention, a downloadable application for a web service may be included as part of the user portion of the web service. A possible implementation of the server side of a web service system is described below with reference to FIG. 3.
[73] На фиг. 3 представлена схема системы веб-сервиса, пригодной для использования с некоторыми не имеющими ограничительного характера вариантами осуществления настоящей технологии. На фиг. 3 представлены не имеющие ограничительного характера варианты осуществления системы первого веб-сервиса 202 и/или системы второго веб-сервиса 204. Для упрощения описания не имеющих ограничительного характера вариантов осуществления изобретения используется ссылка на системы первого и второго веб-сервисов 202 и 204, но это не означает, что системы первого и второго веб-сервисов 202 и 204 должны быть схожими, чтобы подходить для использования в некоторых вариантах осуществления настоящей технологии. Система первого веб-сервиса 202 и система второго веб-сервиса 204 могут быть несхожими и/или каждая из них может отличаться (частично или полностью) от системы веб-сервиса, представленной на фиг. 3, без выхода за границы настоящей технологии.[73] In FIG. 3 is a diagram of a web service system suitable for use with certain non-limiting embodiments of the present technology. In fig. 3 illustrates non-limiting embodiments of a first web service system 202 and/or a second web service system 204. To simplify the description of the non-limiting embodiments of the invention, reference is made to the first and second web service systems 202 and 204, but this does not mean that the systems of the first and second web services 202 and 204 must be similar to be suitable for use in some embodiments of the present technology. The first web service system 202 and the second web service system 204 may be dissimilar and/or each may be different (partially or completely) from the web service system illustrated in FIG. 3, without going beyond the boundaries of this technology.
[74] Системы первого и второго веб-сервисов 202 и 204 могут содержать веб-сервер 302, сервер 304 запросов прикладного программного интерфейса (API, Application Programing Interface), сервер 306 авторизации, хранилище 308 пользовательских профилей, регистратор 310 действий, хранилище 312 шаблонов, журнал 314 регистрации действий, хранилище 316 связей, формирователь 318 токенов, хранилище 320 токенов и/или хранилище 322 папки входящих сообщений. В других вариантах осуществления изобретения системы первого и второго веб-сервисов 202 и 204 могут содержать дополнительные или другие модули для различных приложений или их меньшее количество. Традиционные элементы, такие как сетевые интерфейсы, механизмы защиты, выравниватели нагрузки, отказоустойчивые серверы, консоли управления и обслуживания сетей и т.п. не показаны, чтобы не затруднять понимания подробностей системы.[74] The first and second web service systems 202 and 204 may include a web server 302, an Application Programming Interface (API) request server 304, an authorization server 306, a user profile store 308, an action logger 310, a template store 312 , an activity log 314, a communication store 316, a token generator 318, a token store 320, and/or an inbox store 322. In other embodiments, the first and second web service systems 202 and 204 may contain additional or different modules for different applications, or a smaller number thereof. Traditional elements such as network interfaces, security mechanisms, load balancers, fault-tolerant servers, network management and maintenance consoles, etc. are not shown so as not to make it difficult to understand the details of the system.
[75] Веб-сервер 302 системы первого веб-сервиса 202 может связывать систему первого веб-сервиса 202 через сеть 206 с одним или несколькими пользовательскими устройствами и/или с одним или несколькими внешними веб-сайтами, например, с пользовательским устройством 208 и/или с системой второго веб-сервиса 204. Веб-сервер 302 обслуживает веб-страницы, а также другой веб-контент, такой как Java, Flash, XML и т.д. Веб-сервер 302 может содержать сервер электронной почты или другие функциональные средства обмена сообщениями для получения и маршрутизации сообщений между системой первого веб-сервиса 202 и одним или несколькими пользовательскими устройствами 208. Сообщения могут представлять собой мгновенные сообщения, сообщения в очереди (например, сообщения электронной почты), текстовые сообщения, SMS-сообщения или сообщения любого другого подходящего вида.[75] The web server 302 of the first web service system 202 may communicate with the first web service system 202 via a network 206 with one or more user devices and/or one or more external websites, such as the user device 208 and/or or with a second web service system 204. The web server 302 serves web pages as well as other web content such as Java, Flash, XML, etc. Web server 302 may include an email server or other messaging functionality for receiving and routing messages between the first web service system 202 and one or more user devices 208. Messages may be instant messages, queued messages (e.g., email messages). mail), text messages, SMS messages or any other suitable type of message.
[76] Сервер 304 запросов API системы первого веб-сервиса 202 обеспечивает одной или нескольким внешним системам веб-сервисов, таким как система второго веб-сервиса 204, возможность обмениваться информацией с первым веб-сервисом 202 путем обращения к одному или нескольким интерфейсам API. Такой обмен информацией может представлять собой отправку информации от системы первого веб-сервиса 202 системе второго веб-сервиса 204 и/или отправку информации от системы второго веб-сервиса 204 системе первого веб-сервиса 202. Например, такой обмен информацией может, в числе прочего, представлять собой передачу запроса аутентификации и/или токена, используемого для аутентификации возможного пользователя, и/или данных, связанных с действием, выполняемым в системе второго веб-сервиса 204, как подробно описано ниже. Сервер 304 запросов API системы первого веб-сервиса 202 также может обеспечивать системе второго веб-сервиса 204 возможность отправки информации путем обращения к интерфейсам API. Например, система второго веб-сервиса 204 отправляет запрос API системе первого веб-сервиса 202 через сеть 206, а сервер 304 запросов API получает запрос API. Сервер 304 запросов API обрабатывает запрос путем обращения к интерфейсу API, связанному с запросом API, для формирования соответствующего ответа, который сервер 304 запросов API передает системе второго веб-сервиса 204 через сеть 206.[76] The API request server 304 of the first web service system 202 allows one or more external web service systems, such as the second web service system 204, to communicate with the first web service 202 by calling one or more APIs. Such information exchange may be sending information from the first web service system 202 to the second web service system 204 and/or sending information from the second web service system 204 to the first web service system 202. For example, such information exchange may, among other things, , constitute the transmission of an authentication request and/or a token used to authenticate a possible user, and/or data associated with an action performed on the system of the second web service 204, as described in detail below. The API request server 304 of the first web service system 202 may also enable the second web service system 204 to send information by calling APIs. For example, the second web service system 204 sends an API request to the first web service system 202 via network 206, and the API request server 304 receives the API request. The API request server 304 processes the request by calling the API interface associated with the API request to generate an appropriate response, which the API request server 304 transmits to the second web service system 204 via the network 206.
[77] Сервер 306 авторизации системы первого веб-сервиса 202 может содержать логику определения возможности доступа к некоторой информации, связанной с пользователем, для друзей пользователя, внешних веб-сайтов, таких как система второго веб-сервиса 204, и/или других приложений и лиц. Сервер 306 авторизации может применять одну или несколько настроек конфиденциальности пользователей системы первого веб-сервиса 202. Настройка конфиденциальности пользователя определяет совместное использование конкретной информации, связанной с пользователем. Настройка конфиденциальности содержит спецификацию конкретной информации, связанной с пользователем, и спецификацию объекта или объектов, которым может быть предоставлен доступ к этой информации. В качестве примеров объектов, которым может быть предоставлен доступ к информации, можно привести других пользователей, приложения, систему второго веб-сервиса 204 или любой объект, который потенциально может обращаться к информации. Информация, которой пользователь может поделиться, может содержать информацию профиля пользователя, такую как фотография профиля, номера телефонов, связанные с пользователем, связи пользователя, действия. выполненные пользователем, такие как добавление связи, изменение информации профиля пользователя и т.п.[77] The system authorization server 306 of the first web service 202 may include logic for determining whether certain information associated with the user can be accessed by the user's friends, external websites such as the system of the second web service 204, and/or other applications and persons The authorization server 306 may apply one or more user privacy settings of the first web service system 202. The user privacy setting determines the sharing of specific information associated with the user. A privacy setting contains a specification of specific information associated with a user and a specification of the entity or entities that can be granted access to that information. Examples of entities that may be granted access to the information include other users, applications, the second web service system 204, or any entity that could potentially access the information. The information that a user can share may include user profile information such as profile photo, phone numbers associated with the user, user connections, activities. performed by the user, such as adding a connection, changing user profile information, etc.
[78] В некоторых вариантах осуществления изобретения сервер 306 авторизации системы 202 первого веб-сервиса может управлять одним или несколькими списками действий, которые система второго веб-сервиса 204 способна выполнять в системе первого веб-сервиса 202. В некоторых вариантах осуществления изобретения один или несколько списков действий могут храниться в хранилище 308 пользовательских профилей, в хранилище 316 связей, в хранилище 320 токенов и/или в хранилище 322 папки входящих сообщений. Другие места хранения данных также могут использоваться без выхода за границы настоящей технологии.[78] In some embodiments, the authorization server 306 of the first web service system 202 may manage one or more lists of actions that the second web service system 204 is capable of performing on the first web service system 202. In some embodiments, one or more action lists may be stored in user profile storage 308, association storage 316, token storage 320, and/or inbox storage 322. Other data storage locations can also be used without going beyond the boundaries of this technology.
[79] Список действий может быть связан с учетной записью пользователя системы первого веб-сервиса 202 и также может формироваться, чтобы предложить пользователю задать список действий, выполнение которых он желает разрешить системе второго веб-сервиса 204. В качестве примеров таких действий можно привести проведение транзакции (например, финансовой операции, если система второго веб-сервиса 204 представляет собой систему сервиса электронной торговли), отправку данных, дополнительно сформированных для проведения транзакции (например, отправку подтверждения получения для покупки билета на самолет, если система второго веб-сервиса 204 представляет собой систему веб-сервиса бюро путешествий), отправку данных, дополнительно сформированных для взаимодействия пользователя с системой второго веб-сервиса 204, и т.д.[79] The list of actions may be associated with a user account of the system of the first web service 202 and may also be configured to prompt the user to specify a list of actions that he wishes to allow the system of the second web service 204 to perform. Examples of such actions include performing transaction (e.g., a financial transaction, if the second web service system 204 is an e-commerce service system), sending data additionally generated to carry out the transaction (e.g., sending a receipt confirmation for purchasing an airline ticket, if the second web service system 204 represents a travel agency web service system), sending data additionally generated for user interaction with the second web service system 204, etc.
[80] В альтернативных не имеющих ограничительного характера вариантах осуществления изобретения сервер 306 авторизации системы второго веб-сервиса 204 может содержать логику определения возможности выполнения действия для пользователя сервиса на основе конкретных параметров, таких как токен, полученный от системы первого веб-сервиса 202. Как описано выше применительно к серверу 306 авторизации системы первого веб-сервиса 202, действие может включать в себя проведение транзакции (например, финансовой операции, если система второго веб-сервиса 204 представляет собой систему сервиса электронной торговли), отправку данных, дополнительно сформированных для проведения транзакции, (например, отправку подтверждения получения для покупки билета на самолет, если система второго веб-сервиса 204 представляет собой систему веб-сервиса бюро путешествий), отправку данных, дополнительно сформированных для взаимодействия пользователя с системой второго веб-сервиса 204, и т.д.[80] In alternative, non-limiting embodiments of the invention, the system authorization server 306 of the second web service 204 may include logic for determining whether a service user can perform an action based on specific parameters, such as a token received from the system of the first web service 202. How described above with respect to the system authorization server 306 of the first web service 202, the action may include conducting a transaction (e.g., a financial transaction if the system of the second web service 204 is an e-commerce service system), sending data further generated to complete the transaction , (for example, sending a confirmation of receipt for purchasing an airplane ticket if the second web service system 204 is a travel agency web service system), sending data further generated for user interaction with the second web service system 204, etc. .
[81] Регистратор 310 действий способен получать от веб-сервера 302 данные о действиях пользователя в системе первого веб-сервиса 202 и/или в системе второго веб-сервиса 204 и/или вне их. Регистратор 310 действий может наполнять журнал 314 регистрации действий информацией о действиях пользователя, позволяя системе первого веб-сервиса 202 отслеживать различные действия, выполняемые его пользователями в первом веб-сервисе 202 и/или вне первого веб-сервиса 202, например, во втором веб-сервисе 204. Любое выполняемое конкретным пользователем действие может быть связано с профилем каждого пользователя посредством информации, сохраняемой в журнале 314 регистрации действий или в схожей базе данных либо в другом репозитории данных.[81] The activity logger 310 is capable of receiving from the web server 302 data about user activities on and/or outside the system of the first web service 202 and/or the system of the second web service 204. The activity logger 310 may populate the activity log 314 with user activity information, allowing the system of the first web service 202 to track various activities performed by its users in the first web service 202 and/or outside the first web service 202, such as in a second web service. service 204. Any action performed by a particular user may be associated with each user's profile through information stored in an activity log 314 or similar database or other data repository.
[82] В качестве примеров действий, выполняемых пользователем в системе первого веб-сервиса 202, которые идентифицируются и сохраняются, можно привести добавление связи с другим пользователем, отправку сообщения другому пользователю, чтение сообщения от другого пользователя, просмотр контента, связанного с другим пользователем, участие в мероприятии, опубликованном другим пользователем, или другие действия по взаимодействию с другим пользователем. Действие, выполняемое пользователем в системе первого веб-сервиса 202, регистрируется в журнале 314 регистрации действий. В одном варианте осуществления изобретения система первого веб-сервиса 202 поддерживает журнал 314 регистрации действий в виде базы данных записей. Когда действие выполняется в системе первого веб-сервиса 202, в журнал 314 регистрации действий добавляется запись для этого действия.[82] Examples of actions performed by a user on the system of the first web service 202 that are identified and stored include adding a connection to another user, sending a message to another user, reading a message from another user, viewing content associated with another user, participating in an event posted by another user or otherwise interacting with another user. An action performed by a user on the system of the first web service 202 is recorded in an action log 314 . In one embodiment of the invention, the first web service system 202 maintains an activity log 314 as a database of entries. When an action is performed on the system of the first web service 202, an entry for that action is added to the action log 314.
[83] Кроме того, действия пользователя могут связываться с записью вне системы первого веб-сервиса 202, например, в системе второго веб-сервиса 204, отдельной от системы первого веб-сервиса 202. Например, регистратор 310 действий получает от веб-сервера 302 данные, описывающие взаимодействие пользователя с системой второго веб-сервиса 204. В качестве примеров действий при взаимодействии пользователя с системой второго веб-сервиса 204 или со связанным с ней объектом можно привести выражение пользователем интереса к внешнему веб-сайту или другому объекту, публикацию пользователем комментария в системе второго веб-сервиса 204, публикацию пользователем в системе первого веб-сервиса 202 универсального указателя ресурсов (URL, Uniform Resource Locator) или другого идентификатора, связанного с системой второго веб-сервиса 204, участие пользователя в мероприятии, связанном с системой второго веб-сервиса 204, проведение пользователем транзакции в системе второго веб-сервиса 204 или любое другое действие пользователя, относящееся к системе второго веб-сервиса 204 или к связанному с ней объекту. Таким образом, журнал 314 регистрации действий может содержать действия, описывающие взаимодействие между системой первого веб-сервиса 202 и системой второго веб-сервиса 204, отдельной от системы первого веб-сервиса 202.[83] Additionally, user actions may be associated with a record outside the system of the first web service 202, for example, in a system of a second web service 204 separate from the system of the first web service 202. For example, the activity logger 310 receives from the web server 302 data describing the user's interaction with the second web service system 204. Examples of actions when the user interacts with the second web service system 204 or with an associated object include the user expressing interest in an external website or other object, the user posting a comment in the system of the second web service 204, publication by the user in the system of the first web service 202 of a uniform resource locator (URL, Uniform Resource Locator) or other identifier associated with the system of the second web service 204, participation of the user in an event associated with the second web system -service 204, a user conducting a transaction in the system of the second web service 204, or any other user action related to the system of the second web service 204 or an object associated with it. Thus, the activity log 314 may contain activities describing the interaction between the first web service system 202 and a second web service system 204 that is separate from the first web service system 202.
[84] Формирователь 318 токенов способен формировать токен (например, токен OAuth), аутентифицирующий пользователя сервиса системы первого веб-сервиса 202. В некоторых вариантах осуществления изобретения токен может представлять собой указание, обеспечивающее уникальную идентификацию пользователя сервиса системы первого веб-сервиса 202 без раскрытия какой-либо информации, связанной с учетной записью пользователя. В некоторых альтернативных вариантах осуществления изобретения токен может представлять собой указание, обеспечивающее уникальную идентификацию пользователя сервиса системы первого веб-сервиса 202 и раскрывающее некоторую, но не всю информацию, связанную с учетной записью пользователя. Токен может быть сформирован на основе данных, связанных с учетной записью пользователя 170 сервиса, таких как данные, хранящиеся в хранилище 308 пользовательских профилей, в хранилище 316 связей и/или в хранилище 320 токенов. В некоторых вариантах осуществления изобретения токен может содержать первые данные, обезличено аутентифицирующие пользователя 170 сервиса, и вторые данные, идентифицирующие действие, которое пользователь 170 сервиса может выполнять в системе второго веб-сервиса 204. В некоторых вариантах осуществления изобретения токен, сформированный системой первого веб-сервиса 202, может быть сохранен в хранилище 320 токенов системы первого веб-сервиса 202 и/или в хранилище 320 токенов системы второго веб-сервиса 204.[84] The token generator 318 is capable of generating a token (e.g., an OAuth token) that authenticates a service user of the first web service system 202. In some embodiments, the token may be an indication that uniquely identifies the service user of the first web service system 202 without disclosure. any information associated with your user account. In some alternative embodiments, the token may be an indication that uniquely identifies a service user of the first web service system 202 and discloses some, but not all, information associated with the user's account. The token may be generated based on data associated with the service user account 170, such as data stored in user profile store 308, association store 316, and/or token store 320. In some embodiments, the token may comprise first data that anonymously authenticates the service user 170 and second data that identifies an action that the service user 170 may perform on the system of the second web service 204. In some embodiments, the token generated by the system of the first web service 204 service 202 may be stored in the system token store 320 of the first web service 202 and/or in the system token store 320 of the second web service 204.
[85] Кроме того, система первого веб-сервиса 202 хранит данные об объектах, с которыми пользователь может взаимодействовать с использованием системы первого веб-сервиса 202. Чтобы поддерживать эти данные, в хранилище 308 пользовательских профилей и в хранилище 316 связей хранятся экземпляры соответствующих видов объектов, поддерживаемых системой первого веб-сервиса 202. Объект каждого вида содержит информационные поля, подходящие для хранения информации, соответствующей виду объекта. Например, хранилище 308 пользовательских профилей содержит структуры данных с полями, подходящими для описания профиля пользователя. Когда создается новый объект конкретного вида, система первого веб-сервиса 202 инициализирует новую структуру данных соответствующего вида, назначает для нее уникальный идентификатор объекта и добавляет данные в объект по мере необходимости. Например, это может произойти, когда пользователь становится пользователем системы первого веб-сервиса 202, которая при этом формирует новый экземпляр профиля пользователя в хранилище 308 пользовательских профилей, назначает уникальный идентификатор профилю пользователя и пароль, связанный с уникальным идентификатором, и начинает наполнять поля профиля пользователя информацией, предоставляемой пользователем.[85] In addition, the first web service system 202 stores data about objects that a user can interact with using the first web service system 202. To maintain this data, the user profile store 308 and the relationship store 316 store instances of the corresponding types objects supported by the first web service system 202. Each type of object contains information fields suitable for storing information corresponding to the type of object. For example, user profile store 308 contains data structures with fields suitable for describing a user's profile. When a new object of a particular kind is created, the first web service system 202 initializes a new data structure of the corresponding kind, assigns a unique object identifier to it, and adds data to the object as needed. For example, this may occur when a user becomes a user of the first web service system 202, which then creates a new instance of the user profile in the user profile store 308, assigns a unique ID to the user profile and a password associated with the unique ID, and begins populating the user profile fields. information provided by the user.
[86] Как описано со ссылкой на фиг. 2, в случаях, когда пользователь 170 сервиса имеет учетную запись, связанную с системой первого веб-сервиса 202 и/или с системой второго веб-сервиса 204, эта учетная запись может содержать персональную информацию о пользователе 170 сервиса, в числе прочего, такую как имя пользователя, адрес пользователя, финансовая информация пользователя (например, информация о банковском счете, информация о кредитной карте и т.д.).[86] As described with reference to FIG. 2, in cases where the service user 170 has an account associated with the system of the first web service 202 and/or the system of the second web service 204, this account may contain personal information about the service user 170, among other things, such as user name, user address, user financial information (such as bank account information, credit card information, etc.).
[87] В других вариантах осуществления изобретения учетная запись может содержать не персональную информацию, а одну или несколько ссылок на персональную информацию. В других вариантах осуществления изобретения учетная запись может содержать другую информацию, например, такую как веб-сервис социальной сети, социальная сеть или социальный граф, идентифицирующий других пользователей или объекты, с которыми пользователь 170 сервиса поддерживает взаимоотношения. В некоторых вариантах осуществления изобретения персональная информация и другая информация может храниться в хранилище 308 пользовательских профилей. Другие места хранения персональной информации и другой информации могут использоваться без выхода за границы настоящей технологии.[87] In other embodiments, the account may not contain personal information, but rather one or more links to personal information. In other embodiments, the account may contain other information, such as a social network web service, social network, or social graph identifying other users or entities with which the service user 170 has a relationship. In some embodiments, personal information and other information may be stored in user profile storage 308. Other storage locations for personal information and other information may be used without exceeding the boundaries of this technology.
[88] Например, в некотором варианте осуществления изобретения пользователь 170 сервиса может обращаться к учетной записи, связанной с системой первого веб-сервиса 202, путем предоставления, в числе прочего, учетного имени и/или пароля, однозначно идентифицирующего пользователя 170 сервиса в системе первого веб-сервиса 202. Должно быть понятно, что другие средства однозначной идентификации пользователя 170 сервиса в системе первого веб-сервиса 202 могут использоваться без выхода за границы настоящей технологии. Такие средства могут включать в себя биометрическую информацию, например, связанную с распознаванием отпечатков пальцев, радужной оболочки глаз и/или лиц.[88] For example, in some embodiment, a service user 170 may access an account associated with the system of the first web service 202 by providing, among other things, an account name and/or password that uniquely identifies the service user 170 on the first web service's system. web service 202. It should be understood that other means of uniquely identifying a service user 170 within the system of the first web service 202 may be used without going beyond the boundaries of the present technology. Such means may include biometric information, such as that associated with fingerprint, iris and/or facial recognition.
[89] В одном варианте осуществления изобретения вид объекта может использоваться для определения шаблона из хранилища 312 шаблонов, используемого для отображения контента, например, полученного с веб-страницы системы второго веб-сервиса 204. В частности, шаблон может использоваться для отображения контента с веб-страницы, связанной с объектом, представляющим собой подтверждение получения, дополнительно сформированное для транзакции, проводимой пользователем 170 сервиса во втором веб-сервисе 204 (например, подтверждение получения для покупки билета на самолет).[89] In one embodiment of the invention, an object view may be used to define a template from template store 312 used to display content, for example, obtained from a web page of the second web service 204 system. In particular, the template may be used to display content from a web -a page associated with an object representing a proof of receipt further generated for a transaction conducted by the service user 170 in the second web service 204 (eg, a proof of receipt for purchasing an airline ticket).
[90] Хранилище 316 связей содержит структуры данных, подходящие для описания связей пользователя с другими пользователями, связей с системой второго веб-сервиса 204 или связей с другими объектами. В хранилище 316 связей такие связи пользователя также могут сопоставляться с видом связи, который может использоваться в сочетании с настройкой конфиденциальности пользователя (подробно описано выше) для управления доступом к информации о пользователе. Благодаря данным, хранящимся в хранилище 316 связей, в хранилище 308 пользовательских профилей и в журнале 314 регистрации действий, система первого веб-сервиса 202 может определять взаимосвязи между различными объектами.[90] The association store 316 contains data structures suitable for describing the user's associations with other users, associations with the system of the second web service 204, or associations with other objects. In the association store 316, such user associations may also be mapped to a association type, which may be used in conjunction with the user's privacy setting (detailed above) to control access to the user's information. Through data stored in the relationship store 316, the user profile store 308, and the activity log 314, the first web service system 202 can determine relationships between various objects.
[91] Хранилище 322 папки входящих сообщений может содержать структуры данных, подходящие для хранения данных, полученных от системы второго веб-сервиса 204 в качестве результата действия, выполненного системой второго веб-сервиса 204. В качестве примера данных, полученных от системы второго веб-сервиса 204, можно привести данные, связанные с проведением транзакции (например, финансовой операции, если система второго веб-сервиса 204 представляет собой систему сервиса электронной торговли). Как должно быть понятно специалисту в области настоящей технологии, хранилище 322 папки входящих сообщений может обеспечивать централизованный репозиторий данных, полученных от систем веб-сервисов, внешних по отношению к системе первого веб-сервиса 202, таких как система второго веб-сервиса 204.[91] Inbox storage 322 may include data structures suitable for storing data received from the second web service system 204 as a result of an action performed by the second web service system 204. As an example, data received from the second web service system 204 service 204, data associated with conducting a transaction (eg, a financial transaction, if the system of the second web service 204 is an e-commerce service system) may be provided. As will be appreciated by one skilled in the art of the present technology, the inbox store 322 may provide a centralized repository of data received from web service systems external to the first web service system 202, such as the second web service system 204.
[92] Выше со ссылкой на фиг. 1–3 описаны некоторые не имеющие ограничительного характера примеры систем первого и второго веб-сервисов 202 и 204 для использования с целью решения задачи аутентификации пользователя сервиса, связанного с системой второго веб-сервиса 204. Ниже со ссылкой на фиг. 4–8 описано общее решение этой проблемы.[92] Above with reference to FIG. 1-3 describe some non-limiting examples of first and second web service systems 202 and 204 for use in solving the problem of authenticating a service user associated with a second web service system 204. Referring below to FIG. 4–8 describes a general solution to this problem.
Общий подходGeneral approach
[93] Разработчики настоящей технологии разработали способы и системы, формирующие особый уникальный идентификатор для пары «пользователь-сервис» при аутентификации пользователя клиентского сервиса, связанного со вторым сервисом. Этот особый уникальный идентификатор обозначается USUID.[93] The developers of this technology have developed methods and systems that generate a special unique identifier for a user-service pair when authenticating a user of a client service associated with a second service. This special unique identifier is designated USUID.
[94] Общий подход процесса аутентификации включает в себя формирование идентификатора USUID на основе идентификатора SUID и информации о пользователе. Идентификатор USUID представляет собой глобальный уникальный идентификатор для пары «пользователь - клиентский сервис». В других вариантах осуществления изобретения общий подход может включать в себя формирование глобальных уникальных идентификаторов для пары «пользователь-издатель», при этом издатель управляет несколькими клиентскими сервисами.[94] The general approach of the authentication process involves generating a USUID based on the SUID and user information. The USUID is a globally unique identifier for a user-client service pair. In other embodiments, the general approach may include generating globally unique identifiers for a user-publisher pair, where the publisher manages multiple client services.
[95] Общий подход может включать в себя шаг формирования двух специальных ключей для использования в процессе шифрования и в процессе формирования сигнатуры, соответственно. Общий подход может включать в себя определение начального значения для пользователя. Например, начальное значение может быть равно 0, но пользователь может инициировать обновление начального значения. Такое действие может использоваться, чтобы сделать недействительными все ранее сформированные идентификаторы USUID для этого пользователя.[95] A general approach may include the step of generating two special keys for use in the encryption process and in the signature generation process, respectively. A common approach might involve defining a starting value for the user. For example, the initial value may be 0, but the user can initiate an update to the initial value. This action can be used to invalidate all previously generated USUIDs for that user.
[96] Общий подход может включать в себя шаг шифрования пользовательской информации и начального значения с использованием первого ключа. Подлежащая шифрованию пользовательская информация может представлять собой имя пользователя и/или уникальный идентификатор пользователя (UUID, User Unique ID), связанный с пользователем. В этом примере идентификатор SUID (например, идентификатор клиентского сервиса) может использоваться в процессе шифрования в качестве вектора инициализации.[96] A general approach may include the step of encrypting the user information and seed using a first key. The user information to be encrypted may be a user name and/or a unique user identifier (UUID, User Unique ID) associated with the user. In this example, a SUID (such as a client service identifier) can be used as an initialization vector during the encryption process.
[97] В некоторых вариантах осуществления изобретения идентификатор USUID может быть сформирован с использованием алгоритма AES (Advanced Encryption Standard) в режиме GCM. В целом, стандарт AES представляет собой спецификацию для шифрования электронных данных, утвержденную Национальным институтом стандартов и технологии США (NIST, National Institute of Standards and Technology) в 2001 г. Говоря упрощенно, в криптографии алгоритм GCM представляет собой режим работы симметричных блочных шифров, который может быть полезен за счет своей производительности. Режим GCM обеспечивает пропускную способность высокоскоростных каналов связи при низких затратах на аппаратные ресурсы. При этом выполняется алгоритм аутентифицированного шифрования, обеспечивающий как аутентификацию (целостность), так и конфиденциальность данных. Режим GCM может быть определен для блочных шифров с размером блока в 128 битов. Код Галуа для аутентификации сообщений (GMAC, Galois Message Authentication Code) представляет собой вариант режима GCM, который обеспечивает лишь аутентификацию данных и может использоваться в качестве инкрементального кода аутентификации сообщений. Алгоритмы GCM и GMAC могут принимать векторы инициализации произвольной длины.[97] In some embodiments, the USUID may be generated using the AES (Advanced Encryption Standard) algorithm in GCM mode. In general, the AES standard is a specification for encryption of electronic data, approved by the US National Institute of Standards and Technology (NIST, National Institute of Standards and Technology) in 2001. Simply put, in cryptography, the GCM algorithm is a mode of operation of symmetric block ciphers that can be useful due to its performance. GCM mode provides high-speed communication throughput at low hardware costs. In this case, an authenticated encryption algorithm is performed, providing both authentication (integrity) and data confidentiality. GCM mode can be defined for block ciphers with a block size of 128 bits. The Galois Message Authentication Code (GMAC) is a variant of the GCM mode that provides only data authentication and can be used as an incremental message authentication code. The GCM and GMAC algorithms can accept initialization vectors of arbitrary length.
[98] Общий подход может включать в себя шаг подписания зашифрованных данных с использованием второго ключа. В этом примере для подписания зашифрованных данных может использоваться алгоритм HMAC. В общем случае в криптографии алгоритм HMAC соответствует особому виду кода аутентификации сообщений (MAC, Message Authentication Code) и предусматривает использование криптографической хеш-функции и секретного криптографического ключа. Алгоритм HMAC может применяться для одновременной проверки и целостности данных, и аутентичности сообщения. Алгоритм HMAC может обеспечивать аутентификацию с использованием общедоступного секретного ключа вместо цифровых сигнатур в асимметричном шифровании. Он позволяет отказаться от сложной инфраструктуры открытых ключей, делегируя обмен ключами взаимодействующим сторонам, которые ответственны за создание и использование безопасного канала для согласования ключа до начала обмена данными. Тем не менее, без выхода за границы настоящей технологии в процессе подписания могут использоваться и другие подходящие алгоритмы.[98] A common approach may include the step of signing the encrypted data using a second key. In this example, the HMAC algorithm can be used to sign encrypted data. In general, in cryptography, the HMAC algorithm corresponds to a special type of message authentication code (MAC, Message Authentication Code) and involves the use of a cryptographic hash function and a secret cryptographic key. The HMAC algorithm can be used to simultaneously verify both data integrity and message authenticity. The HMAC algorithm can provide authentication using a public secret key instead of digital signatures in asymmetric encryption. It eliminates the need for complex public key infrastructure by delegating key exchange to communicating parties who are responsible for creating and using a secure channel to agree on the key before communication begins. However, without going beyond the scope of this technology, other suitable algorithms may be used in the signing process.
[99] Общий подход может включать в себя шаг передачи идентификатора USUID и сигнатуры с использованием токена JWT. В целом, токен JWT соответствует предлагаемому интернет-стандарту для создания данных с дополнительной сигнатурой и/или с дополнительным шифрованием. Полезные данные токена JWT основаны на формате JSON и содержат некоторое количество ключей. Эти токены подписываются с использованием личного секретного ключа или личного открытого ключа. Например, сервер может сформировать токен с ключом «logged in as administrator» (вошел в систему как администратор) и предоставить его клиенту. Затем клиент может использовать этот токен, чтобы подтвердить, что он вошел в систему как администратор. Токены могут быть подписаны закрытым ключом одной стороны (обычно сервера), чтобы эта сторона могла впоследствии проверить подлинность токена. Если другая сторона в результате применения некоторых подходящих и заслуживающих доверия средств владеет соответствующим открытым ключом, она также может проверить подлинность токена. Токены разработаны так, чтобы обеспечивать компактность, безопасность для URL-адресов и удобство использования, в частности, в контексте единственной подписи (SSO, Single-Sign-On) в веб-браузере. Ключи JWT можно использовать для передачи идентификационной информации аутентифицированных пользователей между поставщиком идентификационной информации и поставщиком услуг или других подходящих ключей согласно нуждам хозяйственной деятельности. Токен JWT основан на других стандартах на основе формата JSON, таких как веб-сигнатура JSON (JSON Web Signature) и веб-шифрование JSON (JSON Web Encryption).[99] A common approach might include the step of passing a USUID and signature using a JWT token. In general, the JWT token follows the proposed Internet standard for creating data with an additional signature and/or additional encryption. The JWT token payload is based on JSON format and contains a number of keys. These tokens are signed using a private secret key or a private public key. For example, the server can generate a token with the key “logged in as administrator” and provide it to the client. The client can then use this token to verify that they are logged in as an administrator. Tokens can be signed with the private key of one party (usually the server) so that that party can subsequently verify the authenticity of the token. If another party, through some suitable and trustworthy means, holds the corresponding public key, it can also verify the authenticity of the token. Tokens are designed to be compact, URL-safe, and easy to use, particularly in the context of Single-Sign-On (SSO) in a web browser. JWT keys can be used to transfer the identity of authenticated users between the identity provider and the service provider or other suitable keys according to business needs. The JWT token is based on other JSON-based standards such as JSON Web Signature and JSON Web Encryption.
[100] Общий подход может включать в себя шаг регистрации клиентского сервиса. В некоторых вариантах осуществления изобретения оператору или издателю клиентского сервиса может потребоваться регистрация приложения OAuth. Например, оператор может выполнять регистрацию на сервере OAuth, чтобы получать токены для пользователей Yandex™. При этом может быть задан минимальный требуемый набор областей действия, оператором может быть получен идентификатор SUID (например, идентификатор клиента) в ответ на завершение процесса регистрации и может быть добавлен адрес redirect_uri, созданный на основе заранее заданных правил (например, turboapp://<turbo_app_id>). Этот идентификатор SUID может быть задан в настройках клиента. В общем случае области действия представляют собой компьютерный механизм ограничения доступа сервиса к учетной записи пользователя. Например, сервис может запросить одну или несколько областей действия, затем эта информация может быть представлена пользователю на экране разрешения и токен доступа, выданный сервису, может быть ограничен разрешенными областями действия. В общем случае адрес redirect_uri представляет собой универсальный идентификатор ресурсов (URI, Uniform Resource Identifier), используемый системой для отправки кода авторизации. Затем в обмен на код можно получить токен доступа, который может быть использован для аутентификации последующих API-вызовов.[100] A common approach may include a client service registration step. In some embodiments, the operator or publisher of the client service may need to register an OAuth application. For example, an operator can register with an OAuth server to receive tokens for Yandex™ users. This may specify a minimum required set of scopes, may provide a SUID (e.g., client ID) to the operator in response to the completion of the registration process, and may add a redirect_uri generated based on predefined rules (e.g., turboapp://< turbo_app_id>). This SUID can be set in the client settings. In general, scopes are a computer mechanism for limiting a service's access to a user's account. For example, a service may request one or more scopes, this information may then be presented to the user on a permission screen, and the access token issued to the service may be limited to the permitted scopes. In general, the redirect_uri address is a Uniform Resource Identifier (URI) used by the system to send the authorization code. In exchange for the code, you can then receive an access token that can be used to authenticate subsequent API calls.
[101] Общий подход может включать в себя шаг настройки клиентского сервиса. В некоторых вариантах осуществления изобретения оператор базового сервиса может выбирать конкретные настройки клиентского сервиса. Например, клиентский сервис может быть настроен статически путем задания идентификатора SUID (например, идентификатора клиента) в конфигурации и/или динамически путем вызова специального метода JS-API.[101] A common approach may include a client service configuration step. In some embodiments of the invention, the underlying service operator may select specific client service settings. For example, a client service can be configured statically by setting a SUID (e.g. client ID) in the configuration and/or dynamically by calling a custom JS-API method.
[102] Общий подход может включать в себя шаг инициирования авторизации. В некоторых вариантах осуществления изобретения клиентский сервис может вызывать метод вида authorize интерфейса JS-API базового сервиса. Базовый сервис получает идентификатор SUID (например, идентификатор клиента) и, возможно, второй идентификатор (идентификатор издателя) для формирования адреса redirect_uri на основе заранее заданных правил.[102] A common approach may include an authorization initiation step. In some embodiments, the client service may call a method of the form authorize on the JS-API interface of the underlying service. The underlying service receives a SUID (such as the client ID) and possibly a second ID (the publisher ID) to generate a redirect_uri based on predefined rules.
[103] Базовый сервис может обращаться к методу диспетчера учетных записей (AM, Account Manager) с идентификатором SUID и, возможно, со вторым идентификатором в качестве параметров. Можно сказать, что диспетчер AM представляет собой часть базового сервиса (например, суперприложения). Можно сказать, что диспетчер AM представляет собой часть второго сервиса. Диспетчер AM может представлять собой клиентскую библиотеку. Диспетчер AM может выполнять процесс авторизации (например, выбор учетной записи, вход по паролю, регистрацию и т.д.) и может запрашивать у пользователя разрешения, заданные в приложении OAuth клиентского сервиса (например, если пользователь не подтвердил их ранее). В случае успешного выполнения он может отправлять токен OAuth в качестве данных обратной связи (для запросов к интерфейсу API) и токен JWT (для получения информации о пользователе в автономном режиме).[103] The underlying service may access an Account Manager method with a SUID and possibly a second ID as parameters. The AM manager can be said to be part of an underlying service (such as a super application). We can say that the AM manager is part of the second service. The AM Manager may be a client library. The AM Manager can perform the authorization process (eg, account selection, password login, registration, etc.) and can prompt the user for permissions set in the client service OAuth application (eg, if the user has not previously approved them). If successful, it can send an OAuth token as feedback data (for API requests) and a JWT token (for getting user information offline).
[104] Общий подход может включать в себя шаг работы клиентского сервиса. Для получения информации о пользователе клиентский сервер может локально проверять токен JWT. В некоторых вариантах осуществления изобретения эту функцию может выполнять базовый сервис, который в таком случае может отправлять объект JSON с релевантными данными. Характер подлежащих передаче данных может, среди прочего, зависеть от набора областей действия приложения OAuth. В некоторых вариантах осуществления изобретения базовый сервис может использовать токен OAuth при взаимодействии с интерфейсами API других клиентских сервисов, если приложение OAuth имеет необходимые области действия. В дополнительных вариантах осуществления изобретения клиентский сервис может использовать токен JWT для авторизации в своей серверной части. Токен JWT может быть подписан с использованием секретного ключа приложения OAuth, который известен только соответствующей серверной части, которая таким образом может проверять аутентичность токена JWT, предоставленного пользовательской частью клиентского сервиса.[104] A general approach may include a customer service step. To obtain user information, the client server can locally validate the JWT token. In some embodiments, this function may be performed by the underlying service, which may then send a JSON object with the relevant data. The nature of the data to be transferred may depend, among other things, on the scope of the OAuth application. In some embodiments, the underlying service may use the OAuth token when interacting with the APIs of other client services if the OAuth application has the required scopes. In additional embodiments of the invention, the client service may use the JWT token to authorize its backend. The JWT token can be signed using the OAuth application secret key, which is known only to the corresponding backend, which can thus verify the authenticity of the JWT token provided by the user end of the client service.
[105] Общий подход может включать в себя шаг выхода из системы. В некоторых вариантах осуществления изобретения клиентский сервис может вызывать метод вида «logout» базового сервиса. Базовый сервис может пересылать этот запрос методу диспетчера AM. Диспетчер AM может локально удалять сохраненные токены и в некоторых случаях аннулировать токены на сервере. Дополнительно или в качестве альтернативы пользователь может выходить из системы с помощью веб-интерфейса.[105] A common approach may include a logout step. In some embodiments, the client service may call a method of the form "logout" of the underlying service. The underlying service can forward this request to the AM manager method. The AM Manager can locally delete stored tokens and in some cases invalidate tokens on the server. Additionally or alternatively, the user can log out using the web interface.
[106] В контексте настоящей технологии клиентский сервис может получать идентификатор USUID для локального сохранения после первого обращения к нему пользователя 170.[106] In the context of the present technology, a client service may receive a USUID to store locally after the first user 170 accesses it.
[107] В некоторых вариантах осуществления изобретения можно сказать, что пользователь 170 первоначально обращается к клиентскому сервису непосредственно через пользовательскую часть клиентского сервиса (например, с помощью приложения, выполняемого в пользовательском устройстве) и/или через браузерное приложение. Для лучшей иллюстрации этого можно предположить, что клиентский сервис является электронной платформой, а базовый сервис представляет собой встроенные функциональные возможности суперприложения электронной платформы. В этом примере первоначальное обращение к электронной платформе может быть выполнено непосредственно через специализированное приложение в пользовательском устройстве и/или через браузерное приложение. Возможный вариант выполнения прямого первоначального обращения к клиентскому сервису описан со ссылкой на фиг. 4.[107] In some embodiments, the user 170 may be said to initially access the client service directly through the user portion of the client service (eg, through an application running on the user device) and/or through a browser application. To better illustrate this, we can assume that the client service is the electronic platform, and the core service represents the built-in functionality of the super application of the electronic platform. In this example, the initial access to the electronic platform may be made directly through a dedicated application on the user device and/or through a browser application. A possible embodiment of making a direct initial call to a client service is described with reference to FIG. 4.
[108] В других вариантах осуществления изобретения можно сказать, что пользователь 170 первоначально обращается к клиентскому сервису косвенно через базовый сервис. В этом примере первоначальное обращение к электронной платформе может быть выполнено пользователем, обращающимся к суперприложению, с использованием функций электронной платформы в суперприложении. Возможный вариант выполнения косвенного первоначального обращения к клиентскому сервису описан со ссылкой на фиг. 5.[108] In other embodiments of the invention, the user 170 may initially access the client service indirectly through the underlying service. In this example, the initial call to the electronic platform may be made by the user accessing the super application using the functions of the electronic platform in the super application. A possible embodiment of making an indirect initial call to a client service is described with reference to FIG. 5.
Прямая первоначальная аутентификацияDirect initial authentication
[109] В общем случае при первоначальном прямом обращении поток OAuth может быть использован для аутентификации пользователя, а затем второй сервис может формировать идентификатор USUID, который с использованием токена JWT отправляется серверной части первого сервиса для локального хранения. Предполагается, что при попытке пользователя обратиться к сервису последний может выполнять одну или несколько процедур аутентификации и авторизации, при которых пользователю может быть предложено предоставить информацию.[109] In general, on the initial direct call, an OAuth flow can be used to authenticate the user, and then a second service can generate a USUID that is sent to the first service's backend for local storage using a JWT token. It is expected that when a user attempts to access a service, the service may perform one or more authentication and authorization procedures, during which the user may be prompted to provide information.
[110] В одном варианте осуществления изобретения пользователь, выполняющий попытку прямого первоначального обращения к сервису, может быть пользователем, добавляющим элемент в свою корзину на электронной платформе, доступ к которой осуществляется через браузерное приложение. На фиг. 4 представлен не имеющий ограничительного характера пример компьютерного способа, выполняемого при прямой первоначальной аутентификации пользователя 170.[110] In one embodiment of the invention, the user attempting to directly access the service may be a user adding an item to their cart on an electronic platform accessed through a browser application. In fig. 4 provides a non-limiting example of a computer method performed in direct initial authentication of user 170.
[111] На шаге 451 пользователь 170 может выполнять попытку входа в систему с помощью пользовательской части 410 первого сервиса. На шаге 452 пользовательская часть 410 отправляет запрос авторизации пользовательской части 420 второго сервиса. Запрос авторизации может содержать идентификатор SUID (например, идентификатор клиента), связанный с первым сервисом, и информацию redirect_uri. На шагах 453 и 454 пользовательская часть 420 может обмениваться данными с серверной частью 430 второго сервиса. При необходимости пользовательская часть 420 может запрашивать подтверждение областей действия у пользователя 170 на шаге 455 и может получать подтверждение на шаге 456. Например, пользователю с помощью интерфейса (например, окна) может быть предложено выполнить подтверждение. На шаге 457 пользовательская часть 420 может отправлять запрос токена OAuth серверной части 430, которая формирует токен OAuth и отправляет его пользовательской части 420 на шаге 458. Пользовательская часть 420 может отправлять токен OAuth пользовательской части 410 на шаге 459. На шаге 460 пользовательская часть 410 может использовать токен OAuth при запросе информации от серверной части 430. После получения токена OAuth серверная часть 430 может формировать токен JWT с запрошенной информацией и отправлять его пользовательской части 410 на шаге 461. На шаге 462 пользовательская часть 410 может отправлять токен JWT, содержащий информацию, и токен OAuth серверной части 440 первого сервиса. На шаге 463 серверная часть 440 может проверять достоверность токена JWT (например, проверять сигнатуру, которую содержит токен JWT). На шаге 464 серверная часть 440 может сохранять идентификатор USUID и пользовательскую информацию (например, имя пользователя), содержащиеся в полезных данных токена JWT. В результате идентификатор USUID и пользовательская информация, связанные с пользователем 170, могут локально храниться серверной частью 440 первого сервиса. В одном варианте осуществления изобретения пользовательская информация может представлять собой имя пользователя. На шаге 465 серверная часть 440 может отправлять пользовательскую информацию пользовательской части 410. Можно сказать, что пользователь 170 аутентифицируется пользовательской частью 410, которая может использовать пользовательскую информацию для отображения информации пользователю 170. Например, имя пользователя может отображаться с помощью интерфейса GUI.[111] At step 451, the user 170 may attempt to log in using the user portion 410 of the first service. At step 452, the user portion 410 sends an authorization request to the user portion 420 of the second service. The authorization request may contain a SUID (eg, client ID) associated with the first service and redirect_uri information. At steps 453 and 454, the user end 420 may communicate with the second service back end 430. If necessary, user portion 420 may request confirmation of scopes from user 170 at step 455 and may receive confirmation at step 456. For example, the user may be prompted through an interface (eg, a window) to confirm. At step 457, user end 420 may send an OAuth token request to back end 430, which generates an OAuth token and sends it to user end 420 at step 458. User end 420 may send an OAuth token to user end 410 at step 459. At step 460, user end 410 may use an OAuth token when requesting information from the backend 430. After receiving the OAuth token, the backend 430 may generate a JWT token with the requested information and send it to the user end 410 at step 461. At step 462, the user end 410 may send a JWT token containing the information, and the OAuth token of the backend 440 of the first service. At step 463, the backend 440 may verify the validity of the JWT token (eg, verify the signature that the JWT token contains). At step 464, the backend 440 may store the USUID and user information (eg, username) contained in the JWT token payload. As a result, the USUID and user information associated with the user 170 may be locally stored by the first service backend 440. In one embodiment of the invention, the user information may be a user name. At step 465, the backend 440 may send user information to the user end 410. The user 170 can be said to be authenticated by the user end 410, which may use the user information to display information to the user 170. For example, the user's name may be displayed using a GUI interface.
[112] Предполагается, что серверная часть первого сервиса может в дополнение к идентификатору USUID сохранять пользовательскую информацию (например, имя пользователя) для использования в будущем, когда пользователь 170 должен быть аутентифицирован при следующей попытке обращения к первому сервису.[112] It is contemplated that the backend of the first service may, in addition to the USUID, store user information (eg, username) for future use when user 170 needs to be authenticated the next time the first service is attempted.
Косвенная первоначальная аутентификацияIndirect initial authentication
[113] В общем случае при первоначальном косвенном обращении для аутентификации пользователя может быть использован поток OAuth, а затем второй сервис может формировать идентификатор USUID, который с использованием токена JWT отправляется серверной части первого сервиса для локального хранения. Предполагается, что при попытке пользователя обратиться к сервису последний может выполнять одну или несколько процедур аутентификации и авторизации, при которых пользователю может быть предложено предоставить информацию.[113] In general, the initial indirection can use an OAuth flow to authenticate the user, and then the second service can generate a USUID that is sent to the first service's backend for local storage using a JWT token. It is expected that when a user attempts to access a service, the service may perform one or more authentication and authorization procedures, during which the user may be prompted to provide information.
[114] В одном варианте осуществления изобретения пользователь, выполняющий попытку косвенного первоначального обращения к сервису, может быть пользователем, выполняющим суперприложение, и может осуществлять доступ к одной или нескольким функциям сервиса электронной платформы в суперприложении. На фиг. 5 представлен не имеющий ограничительного характера пример компьютерного способа, выполняемого при косвенной первоначальной аутентификации пользователя 170.[114] In one embodiment of the invention, the user attempting the indirect initial access to the service may be the user running the super application and may be accessing one or more functions of the electronic platform service in the super application. In fig. 5 provides a non-limiting example of a computer method performed to indirectly initially authenticate a user 170.
[115] Пользователь 170 может выполнять попытку входа в систему с помощью первого сервиса внутри второго сервиса. На шаге 551 пользователь 170 выполняет попытку входа в систему, а на шаге 552 пользовательская часть 510 первого сервиса отправляет запрос авторизации пользовательской части 520 второго сервиса, где пользователь пытается войти в систему. На шаге 553 пользовательская часть 520 отправляет запрос авторизации диспетчеру 599 AM. Запрос авторизации может содержать идентификатор SUID (например, идентификатор клиента), связанный с первым сервисом, и информацию redirect_uri. На шагах 554 и 555 диспетчер 599 AM может обмениваться данными с серверной частью 530 второго сервиса. При необходимости диспетчер 599 AM запрашивает подтверждение областей действия у пользователя 170 на шаге 556 и может получать подтверждение на шаге 557. На шаге 558 диспетчер 599 AM может отправлять запрос токена OAuth серверной части 530, которая формирует токен OAuth и отправляет его диспетчеру 599 AM на шаге 559. На шаге 560 диспетчер 599 AM может использовать токен OAuth при запросе информации от серверной части 530. После получения токена OAuth серверная часть 530 может формировать токен JWT с запрошенной информацией и отправлять его диспетчеру 599 AM на шаге 561. На шаге 562 диспетчер 599 AM отправляет токен JWT, содержащий информацию, и токен OAuth пользовательской части 520 второго сервиса. На шаге 563 пользовательская часть 520 может отправлять, например, пользовательской части 510 токен OAuth, токен JWT и пользовательскую информацию в одном запросе. На шаге 564 пользовательская часть 510 может отправлять токен JWT серверной части 540 первого сервиса. На шаге 565 серверная часть 540 может проверять достоверность токена JWT (например, проверять сигнатуру, содержащуюся в токене JWT). На шаге 566 серверная часть 440 может сохранять идентификатор USUID и пользовательскую информацию (например, имя пользователя), содержащиеся в полезных данных токена JWT. В результате идентификатор USUID и пользовательская информация, связанные с пользователем 170, могут локально храниться серверной частью 540 первого сервиса. На шаге 567 серверная часть 540 может отправлять пользовательскую информацию пользовательской части 510.[115] User 170 may attempt to log in to a first service within a second service. At step 551, the user 170 attempts to log in, and at step 552, the user end 510 of the first service sends an authorization request to the user end 520 of the second service, where the user attempts to log in. At step 553, the user part 520 sends an authorization request to the AM manager 599. The authorization request may contain a SUID (eg, client ID) associated with the first service and redirect_uri information. At steps 554 and 555, the AM manager 599 may communicate with the second service backend 530. If necessary, the AM manager 599 requests confirmation of scopes from the user 170 in step 556 and may receive confirmation in step 557. In step 558, the AM manager 599 can send an OAuth token request to the backend 530, which generates an OAuth token and sends it to the AM manager 599 in step 559. At step 560, the AM manager 599 can use the OAuth token when requesting information from the backend 530. After receiving the OAuth token, the backend 530 can generate a JWT token with the requested information and send it to the AM manager 599 at step 561. At step 562, the AM manager 599 sends a JWT token containing the information and an OAuth token to the user portion 520 of the second service. At step 563, user end 520 may send, for example, user end 510 an OAuth token, a JWT token, and user information in a single request. At step 564, the user end 510 may send a JWT token to the first service back end 540. At step 565, the backend 540 may verify the validity of the JWT token (eg, verify the signature contained in the JWT token). At step 566, the backend 440 may store the USUID and user information (eg, username) contained in the JWT token payload. As a result, the USUID and user information associated with the user 170 may be locally stored by the first service backend 540. At step 567, the back end 540 may send user information to the user end 510.
[116] Независимо от выполнения первого обращения к первому сервису согласно варианту осуществления изобретения, представленному на фиг. 4, или согласно варианту осуществления изобретения, представленному на на фиг. 5, серверная часть первого сервиса локально сохраняет идентификатор USUID, связанный с парой «пользователь - первый сервис» и пользовательскую информацию конкретного пользователя.[116] Regardless of the execution of the first call to the first service according to the embodiment of the invention shown in FIG. 4, or according to the embodiment of the invention shown in FIG. 5, the first service backend locally stores the USUID associated with the user-first service pair and the user's specific user information.
Обзор последующей аутентификацииPost-Authentication Overview
[117] На фиг. 6 представлено описание потока для последующего обращения пользователя 170 к первому сервису. Предполагается, что при последующем обращении к первому сервису могут выполняться одна или несколько процедур аутентификации и одна или несколько процедур авторизации.[117] In FIG. 6 provides a description of the flow for subsequent user 170 access to the first service. It is assumed that subsequent calls to the first service may involve one or more authentication procedures and one or more authorization procedures.
[118] На шаге 601 пользователь 170 выполняет попытку обращения к первому сервису 610. На шаге 602 первый сервис 610 отправляет запрос идентификатора USUID второму сервису 620. В некоторых вариантах осуществления изобретения, если пользователь 170 в текущий момент времени не аутентифицирован вторым сервисом 620, то второй сервис 620 может запрашивать у пользователя 170 учетные данные на шаге 604. В ответ на запрос предоставления пользовательских учетных данных пользователь 170 может предоставлять пользовательские учетные данные второму сервису 620 на шаге 605. В других вариантах осуществления изобретения, когда пользователь 170 аутентифицирован вторым сервисом 620, второй сервис 620 способен выполнять одну или несколько компьютерных процедур 640 для формирования идентификатора USUID. На шаге 603 второй сервис 620 отправляет идентификатор USUID первому сервису 610.[118] At step 601, user 170 attempts to contact the first service 610. At step 602, the first service 610 sends a USUID request to the second service 620. In some embodiments, if the user 170 is not currently authenticated by the second service 620, then the second service 620 may prompt the user 170 for credentials at step 604. In response to a request to provide user credentials, the user 170 may provide the user credentials to the second service 620 at step 605. In other embodiments, when the user 170 is authenticated by the second service 620, a second service 620 is capable of performing one or more computer procedures 640 to generate a USUID. At step 603, the second service 620 sends the USUID to the first service 610.
[119] В некоторых вариантах осуществления настоящей технологии второй сервис 620 может формировать токен 660 и отправлять его при выполнении шага 603. В некоторых вариантах осуществления изобретения токен 660 может представлять собой токен JWT, содержащий заголовок 662, полезные данные 664 и сигнатуру 666. Например, полезные данные 664 могут содержать идентификатор USUID и, возможно, отметку времени.[119] In some embodiments of the present technology, the second service 620 may generate a token 660 and send it at step 603. In some embodiments, the token 660 may be a JWT token containing a header 662, a payload 664, and a signature 666. For example, the payload 664 may contain a USUID and possibly a timestamp.
[120] В дополнительных вариантах осуществления изобретения, получив идентификатор USUID от второго сервиса 620, первый сервис 610 способен выполнять компьютерные процедуры 630 для подтверждения получения идентификатора USUID от заслуживающего доверия сервиса и для проверки идентификатора USUID при аутентификации пользователя 170. Например, первый сервис 610 может подтверждать сигнатуру 666 токена 660 с использованием секретного ключа. В этом примере первый сервис может формировать сигнатуру подтверждения с использованием секретного ключа и информации из полезных данных 664 и сравнивать ее с сигнатурой 666 из токена 660. После подтверждения первый сервис 610 может сравнивать идентификатор USUID из полезных данных 664 токена 660 с идентификатором USUID, локально сохраненным первым сервисом 610 при первоначальном обращении к первому сервису 610. Пользователь 170 аутентифицируется в случае совпадения. В противном случае пользователь 170 может использовать первый сервис в статусе «anonymous» (анонимный).[120] In additional embodiments of the invention, upon receiving a USUID from a second service 620, the first service 610 is capable of performing computer routines 630 to confirm receipt of the USUID from a trusted service and to verify the USUID when authenticating the user 170. For example, the first service 610 may validate signature 666 of token 660 using the private key. In this example, the first service may generate a confirmation signature using the secret key and information from the payload 664 and compare it with the signature 666 from the token 660. After verification, the first service 610 may compare the USUID from the payload 664 of the token 660 with the USUID locally stored by the first service 610 upon initial access to the first service 610. The user 170 is authenticated if there is a match. Otherwise, user 170 may use the first service in an "anonymous" status.
Подробное описание последующей аутентификацииDetailed description of subsequent authentication
[121] На фиг. 7 представлен компьютерный способ, выполняемый при последующем обращении к клиентскому сервису согласно конкретному варианту реализации настоящей технологии. Предполагается, что один или несколько шагов способа, представленного на фиг. 7, могут соответствовать одному или нескольким шагам способа, представленного на фиг. 6.[121] In FIG. 7 shows a computer method performed upon subsequent access to a client service according to a specific embodiment of this technology. It is contemplated that one or more steps of the method shown in FIG. 7 may correspond to one or more steps of the method shown in FIG. 6.
[122] На шаге 751 возможный пользователь может выполнять попытку использования по меньшей мере некоторой функции первого сервиса через пользовательскую часть 710 первого сервиса. Например, возможный пользователь может попытаться добавить элемент в корзину сервиса электронной платформы. На шаге 752 пользовательская часть 710 может запрашивать идентификатор USUID у сочетания 720 пользовательской части и диспетчера AM второго сервиса. В тех вариантах осуществления изобретения, где возможный пользователь в текущий момент времени не аутентифицирован вторым сервисом (и, возможно, не авторизован в текущий момент времени), могут быть выполнены шаги 753 и 754, на которых может запрашиваться аутентификация возможного пользователя и серверная часть 730 может получать учетное имя и пароль для этой цели. В ответ серверная часть 730 может формировать токен OAuth (x-токен) и отправлять его сочетанию 720 пользовательской части и диспетчера AM на шаге 755. В тех вариантах осуществления изобретения, где пользователь 170 в текущий момент времени аутентифицирован вторым сервисом (и, возможно, авторизован в текущий момент времени), сочетание 720 пользовательской части и диспетчера AM уже имеет токен OAuth и на шаге 756 может отправлять запрос на получение обезличенной пользовательской информации, содержащий указание на токен OAuth и идентификатор SUID (например, идентификатор клиента), связанные с первым сервисом. Серверная часть 730 может формировать токен JWT, содержащий идентификатор USUID, и отправлять его сочетанию 720 пользовательской части и диспетчера AM на шаге 757. Токен JWT отправляется пользовательской части 710 на шаге 758 и серверной части 740 первого сервиса на шаге 759. На шаге 760 серверная часть 740 может проверять достоверность токена JWT (например, проверить сигнатуру, содержащуюся в токене JWT). В некоторых случаях серверная часть 740 также может проверять достоверность токена JWT и/или вложенного идентификатора USUID на основе отметки времени. На шаге 761 серверная часть 740 может сравнивать идентификатор USUID, полученный в токене JWT, с идентификатором USUID, который был локально сохранен при предыдущем обращении. Предполагается, что серверная часть 740 может выполнять операцию поиска среди локально сохраненных идентификаторов USUID. В случае совпадения пользовательская информация о пользователе 170, связанная с совпадающим идентификатором USUID, предоставляется пользовательской части 710 на шаге 762. В случае несовпадения на шаге 762 пользовательской части 710 предоставляется информация, указывающая на статус «anonymous» возможного пользователя.[122] At step 751, a possible user may attempt to use at least some functionality of the first service through the user portion 710 of the first service. For example, a possible user may attempt to add an item to the shopping cart of an electronic platform service. At step 752, the user portion 710 may request a USUID from the user portion and second service AM manager combination 720. In those embodiments of the invention where the possible user is not currently authenticated by the second service (and may not be authorized at the current time), steps 753 and 754 may be performed, at which authentication of the possible user may be requested and the back end 730 may obtain an account name and password for this purpose. In response, the back end 730 may generate an OAuth token (x-token) and send it to the front end/AM manager combination 720 at step 755. In those embodiments where the user 170 is currently authenticated by the second service (and possibly authorized at the current time), the front end and AM manager combination 720 already has an OAuth token and, at step 756, can send a request for anonymized user information containing an indication of the OAuth token and SUID (eg, client ID) associated with the first service. The back end 730 may generate a JWT token containing the USUID and send it to the front end and AM manager combination 720 at step 757. The JWT token is sent to the front end 710 at step 758 and the first service back end 740 at step 759. At step 760, the back end 740 may verify the validity of the JWT token (e.g., verify the signature contained in the JWT token). In some cases, the backend 740 may also verify the validity of the JWT token and/or embedded USUID based on a timestamp. At step 761, the backend 740 may compare the USUID received in the JWT token with the USUID that was locally stored in the previous access. It is assumed that the backend 740 can perform a lookup operation among locally stored USUIDs. If there is a match, user information about the user 170 associated with the matching USUID is provided to the user portion 710 at step 762. If there is a mismatch, at step 762 the user portion 710 is provided with information indicating the "anonymous" status of the possible user.
[123] В некоторых вариантах осуществления изобретения предполагается, что второй сервис и диспетчер AM входят в состав одного элемента (например, второго сервиса). Можно сказать, что диспетчер AM может входить в состав клиентской части второго сервиса.[123] In some embodiments of the invention, it is assumed that the second service and the AM manager are part of a single element (eg, the second service). It can be said that the AM manager may be part of the client side of the second service.
[124] В некоторых вариантах осуществления настоящей технологии реализован способ 800 аутентификации возможного пользователя. Ниже со ссылкой на фиг. 8 более подробно описаны различные шаги способа 800.[124] In some embodiments of the present technology, a method 800 for authenticating a possible user is implemented. Below with reference to FIG. 8 describes the various steps of method 800 in more detail.
Шаг 802: получение в данный момент времени вторым сервисом от первого сервиса запроса возможного идентификатора USUID, связанного с возможным пользователем, в текущий момент времени выполняющим попытку обращения к первому сервису.Step 802: The second service currently receives from the first service a request for a possible USUID associated with the possible user currently attempting to access the first service.
[125] Способ 800 начинается с шага 802, на котором второй сервис в данный момент времени получает от первого сервиса запрос возможного идентификатора USUID, связанного с возможным пользователем, в текущий момент времени выполняющим попытку обращения к первому сервису.[125] Method 800 begins at step 802, where the second service currently receives from the first service a request for a possible USUID associated with the possible user currently attempting to contact the first service.
[126] Следует отметить, что первый сервис связан с идентификатором SUID. Идентификатор SUID уникален для первого сервиса (и/или для издателя первого сервиса). Возможный идентификатор USUID уникален для пары, состоящей из возможного пользователя и первого сервиса (и/или издателя первого сервиса).[126] It should be noted that the first service is associated with a SUID. The SUID is unique to the first service (and/or the publisher of the first service). The candidate USUID is unique to the pair consisting of the candidate user and the first service (and/or the publisher of the first service).
Шаг 804: формирование вторым сервисом в данный момент времени возможного идентификатора USUID, если пользователь ранее был аутентифицирован во втором сервисе.Step 804: The second service currently generates a possible USUID if the user has previously been authenticated with the second service.
[127] Способ 800 продолжается на шаге 804, на котором второй сервис в данный момент времени формирует запрошенный возможный идентификатор USUID. Следует отметить, что возможный идентификатор USUID может быть сформирован вторым сервисом, если возможный пользователь в текущий момент времени аутентифицирован и/или был ранее аутентифицирован во втором сервисе. В некоторых вариантах осуществления изобретения, если возможный пользователь в текущий момент времени не аутентифицирован и/или не был ранее аутентифицирован во втором сервисе, то возможному пользователю может быть предложено представить пользовательские учетные данные.[127] Method 800 continues at step 804, where the second service currently generates the requested candidate USUID. It should be noted that a candidate USUID may be generated by the second service if the candidate user is currently authenticated and/or has previously been authenticated with the second service. In some embodiments of the invention, if a possible user is not currently authenticated and/or has not previously been authenticated with a second service, then the possible user may be prompted to provide user credentials.
[128] Второй сервис формирует идентификатор USUID путем шифрования (а) информации о пользователе для возможного пользователя, аутентифицирующей возможного пользователя во втором сервисе, и (б) идентификатора SUID. В некоторых вариантах осуществления изобретения идентификатор USUID может быть сформирован путем шифрования идентификатора UUID, уникального для возможного пользователя и аутентифицирующего возможного пользователя во втором сервисе, и идентификатора SUID первого сервиса. В дополнительных вариантах осуществления изобретения шифрование может выполняться с применением алгоритма шифрования, использующего секретный ключ и идентификатор SUID в качестве вектора инициализации для шифрования пользовательской информации.[128] The second service generates the USUID by encrypting (a) user information for the possible user authenticating the possible user to the second service, and (b) the SUID. In some embodiments of the invention, the USUID may be generated by encrypting a UUID unique to the candidate user and authenticating the candidate user to the second service and the SUID of the first service. In additional embodiments of the invention, encryption may be performed using an encryption algorithm that uses a secret key and SUID as an initialization vector to encrypt user information.
[129] В одном варианте осуществления изобретения процесс шифрования, выполняемый вторым сервисом, может включать в себя шифрование пользовательской информации с использованием первого секретного ключа и идентификатора SUID в качестве вектора инициализации для алгоритма GCM.[129] In one embodiment of the invention, the encryption process performed by the second service may include encrypting user information using the first secret key and SUID as an initialization vector for the GCM algorithm.
Шаг 806: получение в данный момент времени первым сервисом от второго сервиса токена, указывающего на возможный идентификатор USUID и сигнатуру.Step 806: The first service currently receives from the second service a token indicating a possible USUID and signature.
[130] Способ 800 продолжается на шаге 806, на котором первый сервис в данный момент времени получает от второго сервиса токен, указывающий на возможный идентификатор USUID и сигнатуру. Предполагается, что второй сервис может формировать сигнатуру с использованием второго секретного ключа и алгоритма HMAC.[130] Method 800 continues at step 806, where the first service currently obtains from the second service a token indicating a possible USUID and signature. It is assumed that the second service can generate a signature using the second secret key and the HMAC algorithm.
[131] В некоторых вариантах осуществления изобретения полученный токен может представлять собой токен JWT, содержащий область заголовка, область полезных данных и область сигнатуры. Идентификатор USUID может быть вставлен в область полезных данных, а сигнатура вставляется в область сигнатуры. В некоторых случаях в область полезных данных может быть вставлено значение отметки времени, указывающее на период действия возможного идентификатора USUID и/или токена JWT.[131] In some embodiments of the invention, the resulting token may be a JWT token comprising a header area, a payload area, and a signature area. The USUID may be inserted into the payload area, and the signature may be inserted into the signature area. In some cases, a timestamp value may be inserted into the payload area to indicate the validity period of the possible USUID and/or JWT token.
Шаг 808: сравнение в данный момент времени возможного идентификатора USUID, полученного в данный момент времени, с целевым идентификатором USUID после подтверждения достоверности сигнатуры.Step 808: Compares the currently received candidate USUID with the target USUID after validating the signature.
[132] Способ 800 продолжается на шаге 808, на котором первый сервис в ответ на подтверждение достоверности сигнатуры сравнивает в данный момент времени возможный идентификатор USUID с целевым идентификатором USUID, связанным с пользователем 170.[132] Method 800 continues at step 808, where the first service, in response to the signature validation, compares the currently possible USUID with the target USUID associated with user 170.
[133] В некоторых вариантах осуществления изобретения первый сервис способен проверять сигнатуру из токена путем формирования сигнатуры подтверждения с использованием секретного ключа и информации из полезных данных. Если сигнатура подтверждения совпадает с сигнатурой из токена, то подлинность сигнатуры подтверждается. В других вариантах осуществления изобретения первый сервис может выполнять функцию поиска для определения совпадения одного из множества локально сохраненных идентификаторов USUID с возможным идентификатором USUID, полученным с помощью токена. Следует отметить, что первый сервис может локально хранить идентификаторы USUID для пользователей, ранее обращавшихся к первому сервису (прямо и/или косвенно).[133] In some embodiments of the invention, the first service is capable of verifying the signature from the token by generating a confirmation signature using the secret key and information from the payload. If the confirmation signature matches the signature from the token, then the authenticity of the signature is confirmed. In other embodiments of the invention, the first service may perform a lookup function to determine whether one of a plurality of locally stored USUIDs matches a possible USUID obtained by the token. It should be noted that the first service may locally store USUIDs for users who have previously accessed the first service (directly and/or indirectly).
Шаг 810: аутентификация в данный момент времени первым сервисом возможного пользователя как целевого пользователя без запроса у возможного пользователя дополнительной информации, если возможный идентификатор USUID совпадает с целевым идентификатором USUID.Step 810: Authenticate the candidate user as the target user at a given time by the first service without prompting the candidate for additional information if the candidate USUID matches the target USUID.
[134] Способ 800 продолжается на шаге 810, на котором первый сервис в данный момент времени аутентифицирует возможного пользователя как целевого пользователя без запроса у возможного пользователя дополнительной информации, если возможный идентификатор USUID совпадает с целевым идентификатором USUID.[134] Method 800 continues at step 810, where the first service currently authenticates the candidate user as the target user without prompting the candidate user for additional information if the candidate USUID matches the target USUID.
[135] Например, можно предположить, что возможный идентификатор USUID, полученный с помощью токена, совпадает с локально сохраненным идентификатором USUID, связанным с пользовательской информацией пользователя 170. В этом случае первый сервис аутентифицирует возможного пользователя как пользователя 170 и может использовать пользовательскую информацию, связанную с совпадающим идентификатором USUID, для отображения информации возможному пользователю на пользовательском устройстве.[135] For example, it may be assumed that the candidate USUID obtained by the token matches the locally stored USUID associated with the user information of user 170. In this case, the first service authenticates the candidate user as user 170 and can use the user information associated with a matching USUID to display information to a possible user on the user's device.
[136] Несмотря на то, что описанные выше варианты реализации приведены со ссылкой на конкретные шаги, выполняемые в определенном порядке, должно быть понятно, что эти шаги могут быть объединены, разделены или что их порядок может быть изменен без выхода за границы настоящей технологии. Соответственно, порядок и группировка шагов не носят ограничительного характера для настоящей технологии.[136] Although the above-described embodiments are given with reference to specific steps performed in a particular order, it should be understood that these steps can be combined, separated, or that their order can be changed without departing from the scope of the present technology. Accordingly, the order and grouping of steps are not restrictive for this technology.
[137] Специалисту в данной области техники должно быть понятно, что когда в настоящем описании упоминается «получение данных» от пользователя, электронное устройство, получающее данные от пользователя, может получать электронный (или иной) сигнал от пользователя. Специалисту в данной области техники также должно быть понятно, что отображение данных пользователю с помощью пользовательского графического интерфейса (такого как экран электронного устройства и т.п.) может включать в себя передачу пользовательскому графическому интерфейсу сигнала, содержащего данные, которыми можно манипулировать и по меньшей мере часть которых может быть отображена пользователю с использованием пользовательского графического интерфейса.[137] One skilled in the art will appreciate that when the present description refers to “receiving data” from a user, an electronic device receiving data from a user may receive an electronic (or other) signal from the user. One skilled in the art will also appreciate that displaying data to a user via a graphical user interface (such as the screen of an electronic device, etc.) may include transmitting to the user graphical interface a signal containing data that can be manipulated and at least at least some of which can be displayed to the user using a graphical user interface.
[138] Некоторые из этих шагов и передаваемых или принимаемых сигналов хорошо известны в данной области техники и по этой причине опущены в некоторых частях описания для упрощения. Сигналы могут передаваться или приниматься с использованием оптических средств (таких как волоконно-оптическое соединение), электронных средств (таких как проводное или беспроводное соединение) и механических средств (например, основанных на давлении, температуре или любом другом подходящем физическом параметре).[138] Some of these steps and the signals transmitted or received are well known in the art and for this reason are omitted in some parts of the description for the sake of simplicity. Signals may be transmitted or received using optical means (such as a fiber optic connection), electronic means (such as a wired or wireless connection), and mechanical means (such as based on pressure, temperature, or any other suitable physical parameter).
[139] Для специалиста в данной области могут быть очевидными возможные изменения и усовершенствования описанных выше вариантов осуществления настоящей технологии. Предшествующее описание приведено лишь в иллюстративных целях, а не для ограничения объема изобретения. Объем охраны настоящей технологии определяется исключительно объемом приложенной формулы изобретения.[139] Possible changes and improvements to the above-described embodiments of the present technology may be apparent to one skilled in the art. The foregoing description is provided for illustrative purposes only and is not intended to limit the scope of the invention. The scope of protection of this technology is determined solely by the scope of the attached claims.