ES2733731T3 - Gestión de secuencias de comandos de aplicaciones de terceros - Google Patents

Gestión de secuencias de comandos de aplicaciones de terceros Download PDF

Info

Publication number
ES2733731T3
ES2733731T3 ES14710466T ES14710466T ES2733731T3 ES 2733731 T3 ES2733731 T3 ES 2733731T3 ES 14710466 T ES14710466 T ES 14710466T ES 14710466 T ES14710466 T ES 14710466T ES 2733731 T3 ES2733731 T3 ES 2733731T3
Authority
ES
Spain
Prior art keywords
application
script
party
web
party script
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES14710466T
Other languages
English (en)
Inventor
Corey Goldfeder
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Application granted granted Critical
Publication of ES2733731T3 publication Critical patent/ES2733731T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

Un sistema para permitir a desarrolladores de aplicaciones de software incorporar secuencias de comandos de terceros en sus aplicaciones web, el sistema que comprende: un entorno de secuenciado de comandos seguro que proporciona al menos uno de: autenticación en un servidor, control de acceso, límites en secuenciado de comandos del lado del cliente y gestión de secuencias de comandos; uno o más dispositivos de procesamiento que incluyen uno o más procesadores; y uno o más dispositivos de almacenamiento que almacenan instrucciones que, cuando se ejecutan por uno o más dispositivos de procesamiento, hacen que el uno o más dispositivos de procesamiento permitan a un desarrollador de aplicaciones de software: crear un servicio web del lado del servidor que expone la funcionalidad y los recursos de una aplicación web y permite la comunicación entre una secuencia de comandos de terceros y el servidor de aplicaciones web (301); crear una interfaz de programación de aplicaciones del lado del cliente que expone un subconjunto de la funcionalidad y los recursos de la aplicación web (303), en donde el desarrollador de aplicaciones de software puede conceder acceso configurable a la secuencia de comandos de terceros a través de la interfaz de programación de aplicaciones del lado del cliente; permitir que la secuencia de comandos de terceros acceda al servidor de aplicaciones a través del servicio web (307); permitir que la secuencia de comandos de terceros acceda a la funcionalidad y los recursos de la aplicación web usando la interfaz de programación de aplicaciones del lado del cliente (305) para una interacción segura entre la aplicación web y la secuencia de comandos de terceros; y dotar a un usuario final con acceso a la secuencia de comandos de terceros (309).

Description

DESCRIPCIÓN
Gestión de secuencias de comandos de aplicaciones de terceros.
Antecedentes
Las aplicaciones de software se desarrollan a menudo siguiendo requisitos específicos para proporcionar ciertas capacidades. Aunque un desarrollador de aplicaciones de software puede dotar a los usuarios finales con una funcionalidad valiosa, los desarrolladores de secuencias de comandos de terceros pueden mejorar esta funcionalidad básica proporcionando extensiones, automatizaciones, complementos o códigos similares que cambian o extienden una funcionalidad de la aplicación de software, haciendo que la aplicación sea más fácil de usar. Por ejemplo, los desarrolladores de aplicaciones web pueden crear una aplicación de software para enviar y recibir correos electrónicos. La aplicación web puede incluir una funcionalidad para encontrar y etiquetar correo electrónico. La aplicación también puede tener un límite en la capacidad de tamaño de la cuenta de correo electrónico de cualquier usuario final. No obstante, la aplicación web puede no dotar a los usuarios finales con la capacidad de encontrar mensajes de correo electrónico por encima de un cierto tamaño de modo que puedan borrar mensajes de correo electrónico grandes para liberar espacio en su cuenta de correo electrónico. Un desarrollador de secuencias de comandos de terceros puede escribir un complemento que, cuando se añade a la aplicación de correo electrónico, puede encontrar y etiquetar todos los mensajes de correo electrónico por encima de un cierto tamaño. Un usuario final puede añadir el complemento del desarrollador de terceros a su navegador y ejecutar el complemento para encontrar fácilmente mensajes de correo electrónico grandes de modo que estos mensajes se puedan borrar cuando la cuenta de correo electrónico del usuario final alcance su capacidad de tamaño.
Incluso aunque las secuencias de comandos de terceros pueden mejorar las experiencias de los usuarios finales, muy pocos desarrolladores de aplicaciones de software permiten que secuencias de comandos de terceros no de confianza se añadan a sus aplicaciones web, debido a que añadir una funcionalidad de terceros hace que sea difícil para un desarrollador de aplicaciones web mantener la seguridad de aplicación web y también hace inconsistentes las experiencias de los usuarios finales con la aplicación web.
Como se ilustra en la FIG. 1, las secuencias de comandos de terceros (105) acostumbradas lo más a menudo funcionan a nivel del navegador web (101a, 101b) y no son parte integral de las aplicaciones de software. Un ejemplo notable de secuencias de comandos de terceros a nivel de navegador es un complemento, que es un componente de software que puede personalizar la funcionalidad de una aplicación web. Las secuencias de comandos a nivel de navegador son problemáticas porque son dependientes del navegador. Si un usuario final instala una secuencia de comandos tal como la mostrada en la FIG. 1 (105) para una aplicación (103a) en un navegador (101a), pero entonces cambia el navegador (101b) que está usando para acceder a una instancia diferente de la misma aplicación (103b), el usuario final debe instalar la secuencia de comandos en el nuevo navegador con el fin de obtener la funcionalidad de la secuencia de comandos para la aplicación. Como se muestra en la FIG. 1, la extensión de funcionalidad de la secuencia de comandos 105 de la aplicación está disponible en el navegador 1 (101a), pero no en el navegador 2 (101b) dado que la secuencia de comandos no está instalada en el navegador 2 (101b).
Debería haber un sistema que permita que una secuencia de comandos de terceros interactúe estrechamente con una aplicación alojada mientras que aún permanece segura. El sistema debería permitir que los desarrolladores de aplicaciones de software añadan de manera segura una funcionalidad de secuencia de comandos de terceros a sus aplicaciones alojadas de modo que las secuencias de comandos de terceros se pueden asociar con un usuario final con independencia de cómo está accediendo a la aplicación el usuario final.
Yao-Jan Wu et al: “A Google-Map-Based Arterial Traffic Information System”, CONFERENCIA DE SISTEMAS DE TRANSPORTE INTELIGENTES, 2007, IEEE, 1 de septiembre de 2007, páginas 968-973 presenta tecnologías de mapeado basadas en web para sistemas de información de tráfico con un foco en autopistas y arterias o calles urbanas. En el mismo, se presenta un sistema de Información de Tráfico de Arteria basada en mapas de Google (GATI) para calles urbanas en la Ciudad de Bellevue, Estado de Washington, en donde herramientas web de fuente abierta y tecnologías web emergentes, tales como Ajax, se usan en la implementación del sistema para rendimiento y minimizar costes, en donde las funciones administrativas convenientes se habilitan a través de diseño de bases de datos avanzado y la aplicación de Controlador de Vista de Modelo (MVC).
Compendio
Esta especificación describe tecnologías que se relacionan con gestión de secuencias de comandos de aplicaciones de terceros en general, y específicamente con métodos y sistemas para permitir que desarrolladores de secuencias de comandos de terceros añadan con seguridad una funcionalidad a aplicaciones de software.
En general, un aspecto de la materia en cuestión descrita en esta especificación se puede incorporar en un sistema y método para permitir que desarrolladores de aplicaciones de software incorporen secuencias de comandos de terceros en sus aplicaciones de software. Un sistema ejemplar incluye un entorno de secuencias de comandos que proporciona al menos uno de: autenticación en un servidor, control de acceso, limites en el secuenciado de comandos del lado del cliente, y gestión de secuencias de comandos. Los sistemas pueden incluir adicionalmente uno o más dispositivos de procesamiento y uno o más dispositivos de almacenamiento que almacenan instrucciones para crear un servicio web del lado del servidor que permite la comunicación entre un cliente de secuencias de comandos de terceros y el servidor de aplicaciones; crear una interfaz de programación de aplicaciones del lado del cliente que expone un subconjunto de funcionalidades y recursos de la aplicación, permitir que la secuencia de comandos de terceros acceda al servidor de la aplicación a través del servicio web; permitir que la secuencia de comandos de terceros acceda a la funcionalidad y los recursos de la aplicación usando la interfaz de programación de aplicaciones del lado del cliente; y dotar a un usuario final con acceso a la secuencia de comandos de terceros. Un segundo sistema ejemplar puede incluir un entorno de secuenciado de comandos como se ha descrito anteriormente, uno o más dispositivos de procesamiento, y uno o más dispositivos de procesamiento que almacenan instrucciones que permiten que un desarrollador de secuencias de comandos de terceros: reciba una interfaz de programación de aplicaciones desde una aplicación de software; reciba un servicio web desde la aplicación de software; cree una secuencia de comandos que cambie la funcionalidad de la aplicación de software usando la interfaz de programación de aplicaciones y el servicio web; y permite que los usuarios finales accedan a la secuencia de comandos.
Estas y otras realizaciones pueden incluir opcionalmente una o más de las siguientes características: una secuencia de comandos de terceros puede definir y registrar un desencadenante que inicia una acción en la secuencia de comandos de terceros cuando ocurre un evento en la aplicación; un desarrollador de aplicaciones de software puede tener la capacidad de envolver un servicio web en una biblioteca de secuenciado de comandos que se puede incluir en una secuencia de comandos de terceros; un desarrollador de aplicaciones de software puede ser capaz de cargar una secuencia de comandos de terceros en la aplicación a través de un entorno de desarrollo integrado; el entorno de desarrollo integrado puede crear una marca asociada con una aplicación de software; se puede dotar a un usuario final con una galería de secuencias de comandos específicos de la aplicación que están disponibles para su instalación; y se puede dotar a un usuario final con un panel de secuencias de comandos instaladas actualmente donde el usuario puede gestionar las secuencias de comandos instaladas.
Los detalles de una o más realizaciones de la invención se exponen en los dibujos que se acompañan que se dan a modo de ilustración solamente, y la descripción a continuación. Otras características, aspectos y ventajas de la invención llegarán a ser evidentes a partir de la descripción, los dibujos y las reivindicaciones. Números de referencia y designaciones iguales en los diversos dibujos indican elementos similares.
Breve descripción de los dibujos
La FIG. 1 es un diagrama de bloques que ilustra una realización acostumbrada para añadir secuencias de comandos de terceros a una aplicación web.
La FIG. 2 es un diagrama de bloques que ilustra una realización ejemplar para añadir secuencias de comandos de terceros a una aplicación web.
La FIG. 3 es un diagrama de flujo de un método ejemplar para añadir secuencias de comandos de terceros a una aplicación web.
La FIG. 4 es un diagrama de bloques que ilustra un dispositivo informático ejemplar.
Descripción detallada
Según una realización ejemplar, puede existir un sistema integral de tipo complemento que permite a los desarrolladores de aplicaciones de software incorporar secuencias de comandos de terceros en sus aplicaciones como se ilustra en la FIG. 2. El sistema puede proporcionar el flujo y los mecanismos para permitir que un entorno de secuenciado de comandos seguro se añada a un entorno de desarrollo de aplicaciones de software alojado, de modo que las secuencias de comandos de terceros se puedan incorporar a aplicaciones de software sin que los desarrolladores de aplicaciones tengan que preocuparse acerca de proteger sus aplicaciones de secuencias de comandos maliciosas. Este entorno de secuenciado de comandos puede permitir que una aplicación sea gestionada con secuencias de comandos de manera segura por desarrolladores de secuencias de comandos de terceros que no sean de confianza. Un entorno de secuenciado de comandos ejemplar puede usar Caja para secuenciado de comandos seguro. Caja es un subconjunto de javascript que proporciona seguridad de capacidad de objetos. Esta tecnología proporciona un entorno aislado de JavaScript que puede alterar las secuencias de comandos de usuarios y sanearlas eliminando las llamadas precarias del método. Como se ilustra en la FIG. 2, el servidor de aplicaciones (109) incorpora las secuencias de comandos de terceros (105) a nivel de aplicaciones, de modo que los complementos de las secuencias de comandos son independientes del navegador (101a, 101b) usado para acceder a instancias de la aplicación (103a, 103b). Un usuario que haya iniciado sesión en una aplicación tendrá, por lo tanto, la misma experiencia de usuario con la aplicación, con independencia del navegador con el que el usuario está accediendo a la aplicación.
Un sistema ejemplar puede incluir componentes de secuenciado de comandos tanto de cliente como de servidor, alojamiento de secuencias de comandos, un entorno de desarrollo integrado (IDE) web, y una forma de ver todas las secuencias de comandos para una aplicación dada.
En algunas realizaciones, un sistema ejemplar incluye un entorno de secuenciado de comandos seguro cliente/servidor. Este entorno de secuenciado de comandos puede proporcionar algunas de o todas las siguientes características: (1) un entorno de desarrollo integrado en la nube, (2) tiempo de ejecución de secuenciado de comandos del lado del servidor, (3) alojamiento de secuencias de comandos y bibliotecas, (3) desencadenantes de eventos, (4) gestión de cuentas, (5) interfaces de programación de aplicaciones (API) incorporadas, (6) integración oAuth, (7) un cliente asegurable, (8) secuencias de comandos a las que se puede conceder una autoridad en el navegador limitada que no puede producir ataques maliciosos sobre usuarios finales de la aplicación de software, y (9) una galería por aplicación para ver todas las secuencias de comandos que se desarrollaron para una aplicación específica. Un entorno de secuenciado de comandos también puede proporcionar autenticación en un servidor, controles de acceso y límites en las extensiones del lado del cliente. Además, el entorno de secuenciado de comandos puede gestionar otros detalles, incluyendo alojamiento, API de servidor y gestión de cuentas. En general, un sistema ejemplar debería entender las necesidades de una aplicación web y definir los métodos para que una aplicación web interactúe con un entorno de secuenciado de comandos con el fin de que el entorno de secuenciado de comandos y la aplicación web interactúen.
Una realización ejemplar puede proporcionar diferentes vistas y funcionalidades para diferentes grupos de usuarios previstos. Puede haber una vista para desarrolladores de aplicaciones de software, una para desarrolladores de secuencias de comandos de terceros y otra para usuarios finales.
Desarrolladores de aplicaciones de software
Usando un sistema ejemplar, un desarrollador de aplicaciones de software puede consultar el entorno de secuenciado de comandos para secuencias de comandos instaladas de un usuario final, cargar las secuencias de comandos instaladas en el cliente de la aplicación a través de una tecnología de entorno aislado, crear un entorno aislado de las secuencias de comandos cargadas y permitir que las secuencias de comandos cargadas interactúen con el servidor de la aplicación usando un servicio web creado para interactuar con secuencias de comandos de terceros.
Una realización ejemplar puede dotar a un desarrollador de aplicaciones de software con una forma de cargar una secuencia de comandos a través de un entorno de desarrollo integrado (IDE). Este entorno de desarrollo puede estar precargado con un servicio web para la aplicación de software. Un IDE puede ser capaz de entender qué aplicación abrió el IDE. La aplicación puede transmitir información con respecto a características especiales que la aplicación puede necesitar cuando abre el IDE. Por ejemplo, la aplicación puede enviar una lista de API específicas de la aplicación que deberían completarse automáticamente en el editor de código del IDE. El IDE puede ser genérico y puede no conocer ninguna aplicación particular, mientras que aún se permite que cualquier aplicación personalice el IDE según sea necesario. El IDE también puede tener una forma de crear una marca asociada con una aplicación de software. Por ejemplo, un esquema de logotipo y color de una aplicación se pueden llevar al IDE.
En algunas realizaciones, un sistema ejemplar puede dotar a los desarrolladores de aplicaciones de software con la capacidad de escribir las API del lado del cliente para sus aplicaciones. Una API del lado del cliente puede incluir un código del lado del cliente y el DOM de una aplicación de software particular que es accesible por los desarrolladores de secuencias de comandos de terceros. Puede haber tanto métodos estándar como una plantilla/guía de estilo para añadir otros métodos. Se puede acceder a una funcionalidad y recursos de la aplicación a través de la API del lado del cliente de una aplicación. La API define qué funcionalidad y recursos de la aplicación están disponibles para los desarrolladores de terceros. Por ejemplo, en una aplicación de hoja de cálculo, se puede escribir una secuencia de comandos para mostrar una barra lateral cada vez que un usuario selecciona una celda que contiene una fórmula. Con el fin de que la secuencia de comandos se escriba, la aplicación de hoja de cálculo puede proporcionar una API que contiene un método para devolver la celda seleccionada actualmente. La celda devuelta puede tener propiedades para determinar si la celda es una fórmula y proporcionar el valor de la celda. La API de la hoja de cálculo también puede contener un método para mostrar la barra lateral. Los métodos y las propiedades que una aplicación desearía exponer a secuencias de comandos de terceros se deberían definir dentro de la API de la aplicación.
Un sistema ejemplar también puede dotar a los desarrolladores de aplicaciones de software con herramientas para escribir un servicio web del lado del servidor al que se pueda acceder mediante secuencias de comandos de terceros con el fin de comunicarse con los servidores de aplicaciones. Estos servicios web se pueden escribir usando API preexistentes que se proporcionan a los desarrolladores de aplicaciones de software a través del entorno de secuenciado de comandos. Estas API pueden incluir las API REST y SOAP. Alternativamente, un desarrollador de aplicaciones de software puede construir una biblioteca que se puede incluir en las secuencias de comandos desarrolladas por desarrolladores de secuencias de comandos de terceros. Los desarrolladores de aplicaciones de software pueden crear servicios RESTful que soporten autenticación oAuth y se puedan envolver en una biblioteca de secuenciado de comandos.
Una realización ejemplar puede dotar además a los desarrolladores de aplicaciones de software con una forma de definir y registrar desencadenantes para sus aplicaciones. Un desencadenante es un mecanismo que inicia una acción cuando ocurre un evento. Los desencadenantes pueden ser específicos de la aplicación y ser elegidos por un desarrollador de aplicaciones. Ejemplos de desencadenantes incluyen: onEdit, onOpen y onSave. Un desencadenante “onEdit” se disparará cuando ocurre una edición en una aplicación. Un desencadenante “onOpen” iniciará una acción cuando se abra algo en una aplicación. Un desencadenante “onSave” se disparará cuando se guarde algo dentro de una aplicación. Un desarrollador de aplicaciones puede especificar una lista de nombres de eventos que se pueden usar como eventos desencadenantes para los cuales se pueden escribir secuencias de comandos. Las secuencias de comandos entonces pueden registrar un desencadenante para un evento específico con un servicio de agente de modo que se notifique la secuencia de comandos cuando ocurre el evento particular. El evento se puede registrar y el evento, así como una carga útil opcional que se puede asociar con el evento, se puede proporcionar al servicio de agente. El servicio de agente puede retransmitir noticias acerca del evento desencadenante a las secuencias de comandos que están escuchando para que se dispare un desencadenante de evento particular. El servicio de agente puede ser un servicio REST y la carga útil se puede escribir en JSON.
En algunas realizaciones, el código de lenguaje de secuenciado de comandos de circuitería de entrada se puede proporcionar para cargar secuencias de comandos instaladas en una aplicación sobre una base por usuario final. Un lenguaje de secuenciado de comandos de circuitería de entrada puede ser JavaScript, por ejemplo. Cada usuario final puede querer incluir un subconjunto diferente de secuencias de comandos escritas para una aplicación específica. El código proporcionado puede encontrar todas las secuencias de comandos asociadas con la aplicación y cargar las secuencias de comandos que ha instalado el usuario final que accede actualmente a la aplicación. Además de facilitar comunicaciones cliente/servidor entre una aplicación de software y secuencias de comandos de terceros, un sistema ejemplar puede dotar a un desarrollador de aplicaciones de software con un URL que se enlaza con una vista de almacén web de tramas de modo que el desarrollador de software pueda ver su aplicación tal como aparece en un almacén web. Una aplicación puede ser accesible en un almacén web de modo que los usuarios finales puedan descargar y usar la aplicación. La vista del almacén web del desarrollador de aplicaciones de software puede incluir una pestaña para mostrar las secuencias de comandos instaladas actualmente para el usuario específico, así como mostrar las secuencias de comandos que se pueden instalar.
Desarrolladores de secuencias de comandos de terceros
Un sistema ejemplar puede dotar a los desarrolladores de secuencias de comandos de terceros con un servicio web del lado del servidor por aplicación que es consciente del contexto de la aplicación. Como se ha tratado anteriormente, cuando las secuencias de comandos se ejecutan en el servidor ejemplar, las secuencias de comandos tienen acceso a las API que proporciona el entorno de secuenciado de comandos del lado del servidor. El contexto de la aplicación incluye datos compartidos dentro de una instancia de la aplicación. Estos datos están disponibles para todas las solicitudes de diferentes usuarios. Como se ha explicado anteriormente, el servicio web de una aplicación se escribe por el desarrollador de la aplicación y se proporciona a desarrolladores de secuencias de comandos de terceros usando el entorno de secuenciado de comandos. En algunas realizaciones, un desarrollador de secuencias de comandos de terceros puede tener acceso a una API del lado del cliente para una aplicación que el desarrollador de secuencias de comandos puede usar para acceder a la funcionalidad y a los recursos de la aplicación con el fin de escribir una secuencia de comandos para la aplicación. Como se ha tratado anteriormente, la API del lado del cliente dota a un desarrollador de secuencias de comandos de terceros con tanto acceso a la aplicación de software como el desarrollador de la aplicación decida conceder. El desarrollador de secuencias de comandos de terceros también puede tener acceso a los desencadenantes de eventos de la aplicación que se disparan cuando ocurren ciertos eventos en la aplicación. Una realización ejemplar puede proporcionar unas API de cliente síncronas, la capacidad de una secuencia de comandos para manipular o controlar regiones no contiguas de la interfaz de usuario de una aplicación, y la capacidad de secuenciado de comandos para responder a un evento de usuario, tal como pulsar un botón de una forma que un navegador pueda reconocer el evento de usuario como una respuesta directa a una acción del usuario.
Un sistema ejemplar también puede dotar a un desarrollador de secuencias de comandos con un entorno de desarrollo integrado que puede tener un servicio web de la aplicación específica precargado. Este entorno de desarrollo de secuenciado de comandos puede ser accesible a través de la aplicación para la cual el desarrollador de secuencias de comandos está escribiendo la secuencia de comandos. Además, un sistema ejemplar puede proporcionar la integración del almacén web que permite que un desarrollador de secuencias de comandos especifique la aplicación para la cual se ha escrito la secuencia de comandos del desarrollador de secuencias de comandos.
Usuarios finales
Los usuarios finales de aplicaciones de software que han habilitado secuenciado de comandos de terceros pueden ver una galería de secuencias de comandos específicas de la aplicación que están disponibles para su instalación. Los usuarios finales también pueden tener un panel de secuencias de comandos instaladas actualmente donde los usuarios pueden gestionar sus secuencias de comandos instaladas sobre una base por aplicación.
Según una realización ejemplar, un método ejemplar comienza con la ejecución de una aplicación de software para la cual se han desarrollado secuencias de comandos de terceros. La aplicación de software se puede ejecutar usando las credenciales de autenticación de un usuario final y puede ejecutar un código para obtener secuencias de comandos de terceros para la aplicación que ha instalado el usuario final autenticado. Se pueden devolver los URL para cada secuencia de comandos. Las secuencias de comandos se pueden cargar y ejecutar entonces con la aplicación web asociada. Algunas secuencias de comandos pueden confiar en los desencadenantes con el fin de ejecutarse, pero escucharán los desencadenantes asociados con la aplicación web.
Como se ha tratado anteriormente e ilustrado en la FIG. 3, según otra realización, un sistema ejemplar puede permitir que un desarrollador de aplicaciones web cree un servicio web del lado del servidor que expone la funcionalidad y los recursos de una aplicación web alojada (301). El sistema también puede permitir que el desarrollador de aplicaciones web cree una interfaz de programación de aplicaciones (API) del lado del cliente que expone algo de la funcionalidad y los recursos de la aplicación web (303). El desarrollador de aplicaciones web entonces puede conceder acceso configurable a una secuencia de comandos de terceros a través de la interfaz de programación de aplicaciones de modo que la secuencia de comandos pueda interactuar con la aplicación web (305). Entonces se puede permitir a la secuencia de comandos de terceros que acceda al servidor de aplicaciones web a través del servicio web proporcionado por el desarrollador de aplicaciones web (307). Un desarrollador de secuencias de comandos de terceros puede desarrollar una secuencia de comandos que usa la API del lado del cliente y el servicio web para interactuar con la aplicación web. Un usuario final entonces se puede dotar con acceso a la secuencia de comandos de terceros y puede elegir incorporar esta secuencia de comandos en su perfil de aplicaciones web (309).
La FIG. 4 es un diagrama de bloques de alto nivel de un ordenador (400) ejemplar que se dispone para permitir que los desarrolladores de secuencias de comandos de terceros añadan de manera segura una funcionalidad a las aplicaciones de software usando un editor de secuencias de comandos basado en navegador en un entorno de ejecución de aplicaciones web alojadas y se puede usar para implementar los sistemas, el aparato y los métodos descritos dentro de este documento. En una configuración muy básica (401), el dispositivo informático (400) incluye típicamente uno o más procesadores (410) y una memoria de sistema (420). Un bus de memoria (430) se puede usar para comunicar entre el procesador (410) y la memoria de sistema (420).
Dependiendo de la configuración deseada, el procesador (410) puede ser de cualquier tipo, incluyendo, pero no limitado a, un microprocesador (|j P), un microcontrolador (j C), un procesador de señal digital (DSP) o cualquier combinación de los mismos. El procesador (410) puede incluir uno más niveles de almacenamiento en caché, tales como una caché de nivel uno (411) y una caché de nivel dos (412), un núcleo de procesador (413) y registros (414). El núcleo del procesador (413) puede incluir una unidad aritmética lógica (ALU), una unidad de punto flotante (FPU), un núcleo de procesamiento de señal digital (Núcleo DSP) o cualquier combinación de los mismos. Un controlador de memoria (416) también se puede usar con el procesador (410), o en algunas implementaciones, el controlador de memoria (415) puede ser una parte interna del procesador (410).
Dependiendo de la configuración deseada, la memoria de sistema (420) puede ser de cualquier tipo, incluyendo, pero no limitado a, una memoria volátil (tal como RAM), una memoria no volátil (tal como ROM, memoria rápida, etc.) o cualquier combinación de las mismas. La memoria de sistema (420) típicamente incluye un sistema operativo (421), una o más aplicaciones (422) y datos de programa (424). La aplicación (422) puede incluir un método para la interacción segura entre una aplicación web y una secuencia de comandos de terceros en un entorno de ejecución de aplicaciones web alojada. Los datos de programa (424) incluyen instrucciones de almacenamiento que, cuando se ejecutan por uno o más dispositivos de procesamiento, implementan un sistema y un método para permitir que desarrolladores de secuencias de comandos de terceros añadan de manera segura una funcionalidad a las aplicaciones de software (423). En algunas realizaciones, la aplicación (422) se puede disponer para operar con datos de programa (424) en un sistema operativo (421).
El dispositivo informático (400) puede tener características o funcionalidades adicionales, e interfaces adicionales para facilitar las comunicaciones entre la configuración básica (401) y cualquier dispositivo e interfaz requerida. La memoria de sistema (420) es un ejemplo de medios de almacenamiento informático. Los medios de almacenamiento informático incluyen, pero no se limitan a, RAM, ROM, EEPROM, memoria rápida u otra tecnología de memoria, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento óptico, casetes magnéticos, cinta magnética, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que se pueda usar para almacenar la información deseada y al que se puede acceder mediante el dispositivo informático 400. Cualquiera de tales medios de almacenamiento informático puede ser parte del dispositivo (400). El dispositivo informático (400) se puede implementar como parte de un dispositivo electrónico portátil (o móvil) de pequeño factor de forma, tal como un teléfono celular, un asistente de datos personales (PDA), un dispositivo reproductor de medios personal, un dispositivo de vigilancia web inalámbrico, un dispositivo de auriculares personal, un dispositivo específico de la aplicación o un dispositivo híbrido que incluya cualquiera de las funciones anteriores. El dispositivo informático (400) también se puede implementar como un ordenador personal que incluye configuraciones tanto de ordenador portátil como de ordenador no portátil.
La descripción detallada precedente ha expuesto varias realizaciones de los dispositivos y/o procesos a través del uso de diagramas de bloques, diagramas de flujo y/o ejemplos. En la medida en que tales diagramas de bloques, diagramas de flujo y/o ejemplos contengan una o más funciones y/u operaciones, se entenderá por los que están en la técnica que cada función y/u operación dentro de tales diagramas de bloques, diagramas de flujo o ejemplos se pueden implementar, individual o colectivamente, mediante una amplia gama de hardware, software, microprogramas o virtualmente cualquier combinación de los mismos. En una realización, varias partes de la materia en cuestión descrita en la presente memoria se pueden implementar a través de Circuitos Integrados de Aplicaciones Específicas (ASIC), Agrupaciones de Puertas Programables en Campo (FPGA), procesadores de señal digitales (DSP) u otros formatos integrados. No obstante, los expertos en la técnica reconocerán que algunos aspectos de las realizaciones descritas en la presente memoria, en su totalidad o en parte, se pueden implementar de manera equivalente en circuitos integrados, como uno o más programas de ordenador que se ejecutan en uno o más ordenadores, como uno o más programas que se ejecutan en uno o más procesadores como microprogramas, o virtualmente como cualquier combinación de los mismos, y que el diseño de la circuitería y/o la escritura del código para el software y/o los microprogramas estaría bien dentro de la habilidad de un experto en la técnica a la luz de esta descripción. Además, los expertos en la técnica apreciarán que los mecanismos de la materia en cuestión descrita en la presente memoria son capaces de ser distribuidos como un producto de programa de una variedad de formas, y que una realización ilustrativa de la materia en cuestión descrita en la presente memoria se aplica con independencia del tipo particular de medio portador de señal no transitoria usado para llevar a cabo realmente la distribución. Ejemplos de un medio portador de señal no transitoria incluyen, pero no se limitan a, los siguientes: un medio de tipo grabable, tal como un disco flexible, una unidad de disco duro, un Disco Compacto (CD), un Disco de Video Digital (DVD), una cinta digital, una memoria de ordenador, etc.; y un medio de tipo de transmisión tal como un medio de comunicación digital y/o analógica (por ejemplo, un cable de fibra óptica, una guía de ondas, un enlace de comunicaciones por cable, un enlace de comunicaciones inalámbricas, etc.).
Con respecto al uso de sustancialmente cualquier término plural y/o singular en la presente memoria, los expertos en la técnica pueden traducir del plural al singular y/o del singular al plural según sea apropiado para el contexto y/o la aplicación. Las diversas permutaciones singular/plural se pueden exponer expresamente en la presente memoria por el bien de la claridad.
De este modo, se han descrito realizaciones particulares de la materia en cuestión. Otras realizaciones están dentro del alcance de las siguientes reivindicaciones. En algunos casos, las acciones recitadas en las reivindicaciones se pueden realizar en un orden diferente y aún lograr resultados deseables. Además, los procesos representados en las figuras que se acompañan no requieren necesariamente el orden particular mostrado, o el orden secuencial, para lograr resultados deseables. En ciertas implementaciones, el procesamiento multitarea y paralelo puede ser ventajoso.

Claims (13)

REIVINDICACIONES
1. Un sistema para permitir a desabolladores de aplicaciones de software incorporar secuencias de comandos de terceros en sus aplicaciones web, el sistema que comprende:
un entorno de secuenciado de comandos seguro que proporciona al menos uno de: autenticación en un servidor, control de acceso, límites en secuenciado de comandos del lado del cliente y gestión de secuencias de comandos;
uno o más dispositivos de procesamiento que incluyen uno o más procesadores; y
uno o más dispositivos de almacenamiento que almacenan instrucciones que, cuando se ejecutan por uno o más dispositivos de procesamiento, hacen que el uno o más dispositivos de procesamiento permitan a un desarrollador de aplicaciones de software:
crear un servicio web del lado del servidor que expone la funcionalidad y los recursos de una aplicación web y permite la comunicación entre una secuencia de comandos de terceros y el servidor de aplicaciones web (301); crear una interfaz de programación de aplicaciones del lado del cliente que expone un subconjunto de la funcionalidad y los recursos de la aplicación web (303), en donde el desarrollador de aplicaciones de software puede conceder acceso configurable a la secuencia de comandos de terceros a través de la interfaz de programación de aplicaciones del lado del cliente;
permitir que la secuencia de comandos de terceros acceda al servidor de aplicaciones a través del servicio web (307);
permitir que la secuencia de comandos de terceros acceda a la funcionalidad y los recursos de la aplicación web usando la interfaz de programación de aplicaciones del lado del cliente (305) para una interacción segura entre la aplicación web y la secuencia de comandos de terceros; y
dotar a un usuario final con acceso a la secuencia de comandos de terceros (309).
2. El sistema de la reivindicación 1, que comprende además permitir que una secuencia de comandos de terceros defina y registre un desencadenante que inicia una acción en la secuencia de comandos de terceros cuando ocurre un evento en la aplicación.
3. El sistema de la reivindicación 1, que comprende además permitir a un desarrollador de aplicaciones de software la capacidad de envolver el servicio web en una biblioteca de secuenciado de comandos que se puede incluir en una secuencia de comandos de terceros.
4. El sistema de la reivindicación 1, que comprende además permitir a un desarrollador de aplicaciones de software la capacidad de cargar una secuencia de comandos de terceros en la aplicación a través de un entorno de desarrollo integrado.
5. El sistema de la reivindicación 4, en donde el entorno de desarrollo integrado crea una marca asociada con una aplicación de software.
6. El sistema de la reivindicación 1, que comprende además dotar a un usuario final con una galería de secuencias de comandos específicas de la aplicación que están disponibles para su instalación.
7. El sistema de la reivindicación 1, que comprende además dotar a un usuario final con un panel de secuencias de comandos instaladas actualmente donde el usuario puede gestionar las secuencias de comandos instaladas.
8. Un método implementado por ordenador para permitir que los desarrolladores de aplicaciones de software incorporen secuencias de comandos de terceros en sus aplicaciones web que comprende:
crear un servicio web del lado del servidor que expone la funcionalidad y recursos de una aplicación web y permite la comunicación entre una secuencia de comandos de terceros y la aplicación web (301);
crear una interfaz de programación de aplicaciones del lado del cliente que expone un subconjunto de la funcionalidad y los recursos de la aplicación web (303), en donde el desarrollador de aplicaciones de software puede conceder acceso configurable a la secuencia de comandos de terceros a través de la interfaz de programación de aplicaciones del lado del cliente;
permitir que la secuencia de comandos de terceros acceda al servidor de aplicaciones a través del servicio web (307);
permitir que la secuencia de comandos de terceros acceda a la funcionalidad y los recursos de la aplicación web usando la interfaz de programación de aplicaciones del lado del cliente (305) para una interacción segura entre la aplicación web y la secuencia de comandos de terceros; y
dotar a un usuario final con acceso a la secuencia de comandos de terceros (309).
9. El método implementado por ordenador de la reivindicación 8, que comprende además permitir que una secuencia de comandos de terceros defina y registre un desencadenante que inicia una acción en la secuencia de comandos de terceros cuando ocurre un evento en la aplicación.
10. El método implementado por ordenador de la reivindicación 8, que comprende además permitir a un desarrollador de aplicaciones de software la capacidad de envolver el servicio web en una biblioteca de secuenciado de comandos que se puede incluir en una secuencia de comandos de terceros.
11. El método implementado por ordenador de la reivindicación 8, que comprende además permitir a un desarrollador de aplicaciones de software la capacidad de cargar una secuencia de comandos de terceros en la aplicación a través de un entorno de desarrollo integrado.
12. El método implementado por ordenador de la reivindicación 11, en donde el entorno de desarrollo integrado crea una marca asociada con una aplicación de software.
13. El método implementado por ordenador de la reivindicación 8, que comprende además dotar a un usuario final con una galería de secuencias de comandos específicas de la aplicación que están disponibles para su instalación.
ES14710466T 2013-02-27 2014-02-26 Gestión de secuencias de comandos de aplicaciones de terceros Active ES2733731T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/779,599 US9465586B2 (en) 2013-02-27 2013-02-27 Third party application scriptability
PCT/US2014/018604 WO2014134133A1 (en) 2013-02-27 2014-02-26 Third party application scriptablity

Publications (1)

Publication Number Publication Date
ES2733731T3 true ES2733731T3 (es) 2019-12-02

Family

ID=50280513

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14710466T Active ES2733731T3 (es) 2013-02-27 2014-02-26 Gestión de secuencias de comandos de aplicaciones de terceros

Country Status (11)

Country Link
US (1) US9465586B2 (es)
EP (1) EP2962195B1 (es)
JP (1) JP6162256B2 (es)
KR (1) KR101722108B1 (es)
CN (1) CN104903860B (es)
AU (1) AU2014223569B2 (es)
BR (1) BR112015018082A8 (es)
DE (1) DE202014010923U1 (es)
ES (1) ES2733731T3 (es)
PL (1) PL2962195T3 (es)
WO (1) WO2014134133A1 (es)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397520B2 (en) 2013-08-01 2022-07-26 Yogesh Chunilal Rathod Application program interface or page processing method and device
WO2015015251A1 (en) * 2013-08-01 2015-02-05 Yogesh Chunilal Rathod Presenting plurality types of interfaces and functions for conducting various activities
US20150186193A1 (en) * 2013-12-27 2015-07-02 Microsoft Corporation Generation of client-side application programming interfaces
US9851952B2 (en) * 2014-09-25 2017-12-26 Oracle International Corporation Seamless restful API generation and consumption through a single channel
US10614223B2 (en) * 2015-05-28 2020-04-07 Micro Focus Llc Security vulnerability detection
CN105487910A (zh) * 2016-01-22 2016-04-13 北京世纪龙脉科技有限公司 一种浏览器插件实现方法、http应用服务器和浏览器
US10931679B2 (en) 2016-06-07 2021-02-23 Microsoft Technology Licensing, Llc Service actions for digital assistants
US10521251B2 (en) 2016-09-23 2019-12-31 Microsoft Technology Licensing, Llc Hosting application experiences within storage service viewers
US10063533B2 (en) * 2016-11-28 2018-08-28 International Business Machines Corporation Protecting a web server against an unauthorized client application
US10776081B2 (en) * 2017-03-21 2020-09-15 O.C. Tanner Company Systems and methods for utilizing webhooks integrated in platform-as-a-service supported application development and deployment
US10862979B2 (en) 2017-04-07 2020-12-08 Microsoft Technology Licensing, Llc Techniques for supporting remote micro-services as native functions in spreadsheet applications
US10791105B2 (en) 2017-04-07 2020-09-29 Microsoft Technology Licensing, Llc Credential-based proactive discovery of remote micro-services by spreadsheet applications
US10789360B2 (en) * 2018-01-25 2020-09-29 Sap Se Protection against third party JavaScript vulnerabilities
CN108616540B (zh) * 2018-05-09 2020-09-01 聚龙股份有限公司 一种基于跨平台加密算法与声明式过滤认证的平台认证方法及系统
US10331462B1 (en) * 2018-11-06 2019-06-25 Cloudflare, Inc. Cloud computing platform that executes third-party code in a distributed cloud computing network
KR102612851B1 (ko) * 2022-11-16 2023-12-13 쿠팡 주식회사 스크립트와 관련한 정보를 제공하는 전자 장치 및 그 방법

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167534A (en) * 1995-11-24 2000-12-26 Rational Software Corporation Load test system and method
US7814157B2 (en) * 2000-01-11 2010-10-12 Eolas Technlogies, Inc. Hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs
JP2003141066A (ja) * 2001-06-20 2003-05-16 Matsushita Electric Ind Co Ltd ネットワークシステムおよびエージェントサーバ
EP1456778A4 (en) * 2001-10-26 2006-05-24 Zeosoft Technology Group Inc SYSTEM FOR DEVELOPING, MANAGING AND OPERATING DISTRIBUTED CLIENTS AND SERVERS
US20040098704A1 (en) * 2002-11-14 2004-05-20 International Business Machines Corporation Systems and methods for defining Web applications pages
US7974990B2 (en) * 2003-07-16 2011-07-05 Hewlett-Packard Development Company, L.P. Managing program applications
US7676785B2 (en) * 2004-02-13 2010-03-09 Microsoft Corporation Hosted application as a designer in an integrated development environment
BRPI0401465A (pt) * 2004-04-20 2006-02-21 Embria Informatica Ltda sistema para administrar interações entre usuários e aplicações de software em um ambiente web
US20050257196A1 (en) * 2004-05-17 2005-11-17 Gideon Hollander System and method for developing new services from legacy computer applications
JP4355639B2 (ja) * 2004-09-15 2009-11-04 キヤノン株式会社 画像処理装置およびその制御方法
US8099713B2 (en) * 2005-01-18 2012-01-17 Siemens Aktiengesellschaft Program system, and method and system arrangement for configuring it
US7779385B2 (en) * 2006-05-10 2010-08-17 Oracle America, Inc. Method and system for automated component product integration
US8082539B1 (en) * 2006-12-11 2011-12-20 Parallels Holdings, Ltd. System and method for managing web-based forms and dynamic content of website
US8091067B2 (en) * 2007-01-12 2012-01-03 Sas Institute Inc. Method and system for hosting a programming environment
US20090049423A1 (en) * 2007-07-23 2009-02-19 Ebay Inc. Javascripttm programming extension
US9218166B2 (en) * 2008-02-20 2015-12-22 Embarcadero Technologies, Inc. Development system with improved methodology for creation and reuse of software assets
US8825691B2 (en) 2009-06-03 2014-09-02 Yahoo! Inc. Open search assist
US8689177B2 (en) * 2009-08-31 2014-04-01 Accenture Global Services Limited Integration environment generator
US8595284B2 (en) * 2009-12-14 2013-11-26 Samsung Electronics Co., Ltd Web application script migration
US20110167332A1 (en) * 2010-01-07 2011-07-07 Neopost Technologies System and Method for Generating Web Pages
US9189649B2 (en) * 2010-06-25 2015-11-17 International Business Machines Corporation Security model for workflows aggregating third party secure services
US8997069B2 (en) * 2011-04-13 2015-03-31 Microsoft Technology Licensing, Llc API descriptions
US8689344B2 (en) * 2011-05-16 2014-04-01 Guest Tek Interactive Entertainment Ltd. System and method of integrating modules for execution on a computing device and controlling during runtime an ability of a first module to access a service provided by a second module
US8640093B1 (en) * 2011-06-24 2014-01-28 Amazon Technologies, Inc. Native web server for cross-platform mobile apps
US9092540B2 (en) * 2012-02-14 2015-07-28 International Business Machines Corporation Increased interoperability between web-based applications and hardware functions
US20130275957A1 (en) * 2012-04-12 2013-10-17 Microsoft Corporation Customizing appliances
US20140047413A1 (en) * 2012-08-09 2014-02-13 Modit, Inc. Developing, Modifying, and Using Applications

Also Published As

Publication number Publication date
DE202014010923U1 (de) 2017-01-18
CN104903860A (zh) 2015-09-09
BR112015018082A2 (pt) 2017-07-18
JP6162256B2 (ja) 2017-07-12
US9465586B2 (en) 2016-10-11
BR112015018082A8 (pt) 2018-01-02
KR101722108B1 (ko) 2017-03-31
KR20150122216A (ko) 2015-10-30
US20140245253A1 (en) 2014-08-28
EP2962195A1 (en) 2016-01-06
PL2962195T3 (pl) 2019-10-31
WO2014134133A1 (en) 2014-09-04
EP2962195B1 (en) 2019-04-10
AU2014223569B2 (en) 2016-07-07
JP2016505994A (ja) 2016-02-25
AU2014223569A1 (en) 2015-07-09
CN104903860B (zh) 2018-01-16

Similar Documents

Publication Publication Date Title
ES2733731T3 (es) Gestión de secuencias de comandos de aplicaciones de terceros
US11593055B2 (en) Selective screen sharing
JP5592969B2 (ja) セキュアなブラウザベースのアプリケーション
US10032043B2 (en) Masking sensitive data in mobile applications
US8973158B2 (en) Trust level activation
JP5865496B2 (ja) 個人用携帯機器上で仕事環境にアクセスするためのロックスクリーン
KR102509594B1 (ko) 어플리케이션 코드의 위변조 여부 탐지 방법 및 이를 지원하는 전자 장치
US20180232365A1 (en) Context-aware translation memory to facilitate more accurate translation
US10534817B2 (en) Sharing a process in a web client
US10592063B1 (en) Controlling actions for browser extensions
Misra et al. Android security: attacks and defenses
US20210026913A1 (en) Web browser control feature
US20150128208A1 (en) Apparatus and method for dynamically controlling security in computing device with plurality of security modules
Almisreb et al. A review on mobile operating systems and application development platforms
US20170124733A1 (en) Synchronized maps in ebooks using virtual gps channels
Strauss et al. Getting Started with. NET Core 3.0
Van Rousselt et al. Authentication inside tabs
JP2023058451A (ja) コンピュータ実装方法、システム、およびコンピュータプログラム(アプリケーションのコンテナ化の促進)
Mulalić et al. A review on mobile operating systems and application development platforms
Atkinson et al. Introduction to SharePoint Front-End Solutions
Bivol et al. SYSTEM FOR RESTRICTING USER ACCESS TO ANDROID OPERATING SYSTEM
Vabishchevich Live gaming-Android Application
Vérez et al. Security Model of Firefox OS
Beede et al. MyShield: Protecting Mobile Device Data via Security Circles; CU-CS-1091-12