WO2025162892A1 - Method for managing the calling of an application programming interface by a client - Google Patents
Method for managing the calling of an application programming interface by a clientInfo
- Publication number
- WO2025162892A1 WO2025162892A1 PCT/EP2025/052035 EP2025052035W WO2025162892A1 WO 2025162892 A1 WO2025162892 A1 WO 2025162892A1 EP 2025052035 W EP2025052035 W EP 2025052035W WO 2025162892 A1 WO2025162892 A1 WO 2025162892A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- call
- api
- interface
- client
- application programming
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2137—Time limited access, e.g. to a computer or data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Definitions
- the technical field is that of IT.
- the invention relates to a method for managing the call by a client of an application programming interface.
- An application programming interface is a way for a given software to give other software access to data or functionalities provided by the given software.
- the software that provides access to data or functionalities or in general to one of its elements provides a service to other software which are generally referred to as the clients of the service offered. This is called a client-server architecture.
- client-server architecture the concept of service (access to data or functionality or any other element through an application programming interface) is confused with the concept of server (a real or virtual machine on which one or more software programs that provide services run). This term is, however, widely used by those skilled in the art.
- Client-server architectures and the use of APIs are widespread in computing.
- a computer server is placed in a communications network in which clients are also present.
- Clients can send requests to the server via the communications network, allowing access to the various services offered through an API.
- the server will perform an access control to verify whether the client is authorized to access the requested service, and will provide it if so.
- the requested service could be, for example, the provision of data that will then be read by the client for further processing or the execution of a specific action.
- a server can be queried by several different clients.
- the request will be issued by the client using a given communication protocol.
- One protocol that can be used in this context is the HTTP protocol (acronym for Hyper Text Transfer Protocol ).
- This protocol is originally used to allow the transfer of information from a website to a web browser as well as web browsing in general, but the GET and POST requests present in the HTTP protocol can also be used to transfer data from a client to a server and receive data in return. This is called a web service.
- browsing websites in general is done according to a client-server architecture, where the web browser plays the role of a client, the web server is a server, and the request from the client to the server consists of retrieving the content of a website from a server in order to be able to display it in the browser.
- the HTTP protocol within a client-server architecture and the provision of web services to retrieve any type of data, or to control any type of action, without being limited to browsing and displaying websites.
- the access control system used will be that of the HTTP protocol itself.
- a client will send a request using the HTTP protocol to a server identified by an address given by a uniform resource identifier, or URI (acronym for Uniform Resource Identifier ).
- URI uniform resource identifier
- An API call is typically broken down into two elements. The first is the name of a called method; the second is the argument value(s) passed as parameters to the called method.
- the called method will be defined by an HTTP protocol verb (for example, the verb GET) as well as by the called URI, and the called argument value(s) can be passed as parameters in the HTTP call. Calling the method allows access to any type of element of the service.
- tel_num is passed as an argument, with the value +33123456789, which is the phone number for which the roaming status is requested.
- Other response formats can of course be defined.
- the method arguments can be passed in other formats, for example, JavaScript objects using JSON ( JavaScript Object Notation ) or objects written in XML ( Extensible Markup Language ).
- Access control ensures that a given client, when calling an API to obtain a resource, is both identified and authorized to call the API method.
- the access control system used may be that of the HTTP protocol itself.
- a client will send a request using the HTTP protocol to a service identified by an address given by a uniform resource identifier, or URI (acronym for Uniform Resource Identifier ).
- the request will then be accepted or refused by the web server hosting the web service identified by the URI according to the conditions given by the HTTP protocol.
- the client provides in a header of the request its identifier and a password or a cryptographic password hash, depending on the authentication method chosen. If the client is authorized to access the resource, that is to say the URI, and if the password corresponds to the client's identifier, the request will be processed by the web server and the resource accessed by the client.
- the access control system is limited to checking that the identified client has the authorization to call the method it calls and blocking it if this is not the case.
- a client authorized to access the GET http:/API/roaming_status API can make this call for any value of the tel_num parameter, that is, for any mobile phone number.
- a bank may detect that payments are being made by credit card in Thailand and suspect fraud. By consulting the roaming status of the mobile phone of the owner of the credit card in question, the bank can obtain information on the location of the owner and confirm or deny that his credit card is the victim of fraud, if he is currently in Thailand.
- a telecommunications operator may therefore find it advantageous to sell a bank access to the API providing this roaming status. But the telecommunications operator must also protect the confidentiality of its customers' data.
- granting a bank access to the API will allow it to know the roaming status of all mobile phones managed by the telecom operator and not just those belonging to the bank's customers.
- legacy systems it is not possible, or at least very difficult, to modify the programs developed. These may, for example, have been developed in programming languages that are no longer in use. Or, the program was developed by a supplier who declares that they can no longer or will not modify it, or at least not for an acceptable price. In the absence of the possibility of modifying the legacy system, it is therefore not possible to open access to its APIs to a third party for reasons of protecting the confidentiality of its customers' data.
- the API may have been initially developed for the internal needs of the telecommunications operator's information system, by a telecommunications systems equipment manufacturer.
- the supplier may refuse to modify the development for a reasonable price.
- the only solution is then a contractual solution, that is to say, to ask an external user of the API to limit their use of the API to arguments for which this use is authorized but without being able to ensure by an IT tool that this limitation is respected.
- a given client may or may not be allowed to call a given method without specifying how the rules governing this access can evolve.
- the invention improves the situation.
- an access control is carried out which is also based on the analysis of the values of the arguments which are passed as parameters to the element called when calling the application programming interface.
- the element which is intended to be executed following the call to the application programming interface belongs to a software and hardware system.
- This element of the system which is called can be for example a method, which will execute one or more calculations and return data, or execute various actions, or a database query which will then simply provide one or more data in response, or any other computer element.
- the called element is a software element which relies for its execution on different hardware and software elements present in a larger system, interfaced by the application programming interface. This system will most often be a legacy system, which cannot be modified, but the invention can be applied to recently developed systems.
- the method also comprises a step of verifying the identity of the software client.
- the access control is carried out at the time of verifying the identity of the software client, i.e. at the time when it is checked that the client is authorized to call the interface.
- control over the values passed as parameters of the call i.e. the authorization step
- the authorization step is carried out before accessing the interface and therefore the execution of the element targeted by the call.
- this verification is carried out before accessing the interface of the called element, it is done outside the software system that is interfaced by the application programming interface. In this way, access control that performs fine-grained management of access rights can be deployed even when the interfaced system is a legacy system, which cannot be modified.
- the method comprises, if the given call is authorized to access the interface, a step of creating a rule comprising a value obtained following the execution of the called element, said created rule relating to a subsequent step of authorization of another call.
- creating a rule includes adding a rule to a rule base.
- the access control system is scalable. Access control is based on a set of rules authorizing or not authorizing the client's access to the interface depending on the values of the parameters of the call to be authorized. Access control will depend on the results of the execution of the element called by the software client. This allows the system to evolve but also to easily provide a rule base with the rules necessary for its operation. During the first implementation of the method, the creation of rules will make it possible to easily create a set of authorization rules for subsequent uses of the method.
- the rule created is a rule authorizing a subsequent call from the same software client to the same application programming interface.
- the form of the rule created or added to a rule base is specified. This is only an authorization rule, and for exactly the same client and for the same call. This mode makes it easy to populate the rule base with the authorizations necessary for using the application programming interface.
- the rule created is associated with a validity period.
- the set of rules used to define access authorizations evolves over time.
- An authorization can thus be given temporarily, in order to be able to carry out an operation for a limited time only, then prohibit it in order to protect the resource accessed by the call.
- This type of temporary authorization can particularly well apply to e-commerce operations such as the purchase of a basket collected on an e-commerce site or to operations for updating a customer account, such as validating a new password.
- the validity period associated with the added rule is determined by a value obtained following the execution of the called element.
- the validity period associated with the added rule is a value fixed in advance.
- the functioning of the evolution over time of the rules is specified.
- This evolution can be controlled by the interfaced system which provides, at the same time as the values which define the added rule, its validity period.
- the validity period is defined a priori which means that all the rules end up expiring after a certain time.
- information is provided to the software client if its access to the application programming interface is denied for the values of the arguments submitted as parameters.
- the software client can then modify its call if necessary or transmit the information to users or other software components. Its information is provided without the element or the system interfaced by the application programming interface having to intervene.
- the call is a call to a Web service using the POST verb and a rule created is a rule authorizing a subsequent call from the same software client to the same Web service using one of the verbs GET, HEADER, PUT or PATCH.
- This implementation makes it easier to create rules.
- the client software is allowed to make an API call with a POST verb.
- a reference is obtained, which can be used by a call with another verb, and this subsequent call is authorized by the rules.
- the call is a call to a Web service and the arguments of the called method are present in a computer object using JSON notation.
- the invention is applied to web services, which form a very widespread category of client-server architectures.
- the values of the arguments passed as parameters of the called methods can be grouped into a computer object using JSON notation.
- a tool such as JSONpath can then provide access to the values in question present in the object.
- the management entity further comprises a rule base, said rules relating to the authorization for the call to access the interface.
- the invention relates to a computer program capable of being implemented by a management entity, the program comprising code instructions which, when executed by a processor, carry out the steps of the management method defined above.
- the invention relates to a data medium on which is recorded a computer program comprising sequences of instructions for implementing the management method defined above.
- the data carrier may be any entity or device capable of storing the programs.
- the carrier may comprise a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording means such as a hard disk.
- the carrier may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means.
- the program according to the invention may in particular be downloaded from a network such as the Internet.
- the information carrier may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the method in question.
- the program according to the invention may use any type of computer technology in terms of compiled, interpreted programming languages, or a combination of both as well as in terms of operating systems.
- the software client C which has an identity ID.
- This system S comprises an element M, for example a computer method.
- the element M is interfaced by an application programming interface API.
- the management entity 100 does not include a verification module 101 or a rule base DB.
- the client C, the management entity 100 and the system S are connected to each other by a communication network not shown in the .
- This may be the Internet network, or a private network, or a combination of several networks.
- the connection between the client C and the management entity 100 may be made, for example, via the Internet network, while the management entity 100 will then communicate with the system S via a private network.
- the software client C runs on hardware that has the hardware architecture of a conventional computer.
- This hardware includes in particular a processor, a RAM type random access memory and a read-only memory such as a Flash or ROM type memory (not shown in the figure) and may include input-output devices such as keyboards and/or screens (not shown in the figure).
- the hardware on which the client C runs includes communication means that allow it to access one or more communication networks.
- This hardware may be, for example, a computer or a smartphone or hardware components of a cloud architecture .
- the software system S is also hosted in hardware that has the hardware architecture of a conventional computer. It includes in particular a processor, a RAM type random access memory and a read-only memory such as a Flash, ROM type memory (not shown in the figure) and may include input-output devices such as keyboards and/or screens (not shown in the figure).
- the hardware on which the client C runs includes communication means that allow it to access one or more communication networks. This hardware may be, for example, a computer or a smartphone or hardware components of a cloud architecture or a server.
- the element M present in the system S is called through the API interface. It can be a computer method, a query to a database or any other computer element.
- the element M includes the execution of a software part on hardware elements that can belong to the system S or be deported to external hardware elements in the case of a cloud architecture.
- the software client C and the system S form a client-server architecture, that is to say that the system S offers, through the application programming interface API, the possibility for several software clients C to obtain data or to perform operations by making a call through the API interface.
- the operation performed through the API interface is the call of the method M.
- the same API interface can be used to call other elements of the system S.
- the system S can include other interfaces giving access to other software and hardware elements.
- the client C is not a monolithic program but uses data and functions rendered by the system S.
- the software client C can be a mobile application running on a smartphone and which will call elements of the system S through the API interface and possibly other interfaces to obtain certain data or perform certain operations.
- the system S will then be a software that can run on one or more hardware servers or in a cloud architecture.
- the client C can also be an application hosted on a personal computer, or a web application that runs virtually in a web browser.
- These architectures can also use, for both the execution of the client C or the system S, virtual machine techniques or containerization of software components.
- the application programming interface can be implemented using several possible computing techniques.
- the software system S can be integrated into a web server and the API interface will then be a URL offered by the web server.
- Other techniques are possible such as SOAP or CORBA.
- the management entity 100 also has the hardware architecture of a conventional computer.
- This hardware includes in particular a processor, a RAM type memory and a read-only memory such as a Flash, ROM type memory (not shown in the figure) and may include input-output devices such as keyboards and/or screens (not shown in the figure).
- the hardware on which the management entity 100 runs includes communication means which allow it to access one or more communication networks and in particular to be in communication with both the software client C and the system S.
- management entity 100 may, in certain embodiments, depend on the technique used to interface the element M of the system S.
- the management entity 100 may be an element of the Web server which provides access to the API interface. Other embodiments are possible depending on the interfacing technique chosen.
- the management entity 100 is distinct from the system S.
- the system S is generally a legacy system, which cannot be modified, even if the invention can also be applied to the interfacing of new systems S.
- the software client C sends a request to the API interface of the system S to execute a method M and passes values V as parameters of this request.
- This request or call to the API interface is first processed by the management entity 100 before any execution of an element belonging to the system S.
- the system S is a web service and can be accessed by sending HTTP requests to it. These requests are then managed by a web server and the management entity 100 can be part of the web server's access control system.
- the module 101 of the management entity 100 will first check CHK the identity ID of the software client C.
- the identity ID of the client C is transmitted in a header of the HTTP request.
- the client C will transmit a password or a cryptographic certificate.
- This security data is used by the module 101 to verify that the identity ID presented by the client C is indeed the correct one.
- Other identity verification techniques are possible other than those used by web servers. If the CHK verification of the identity ID of the software client C fails, the method according to the invention does not continue and an error code can be sent to the software client C or a security alert or any other appropriate measure.
- the management entity 100 does not include a verification model 101 of the identity ID of the software client C. This identity is considered to be provided to the management entity 100.
- the module 102 of the management entity 100 will then proceed to extract XTR values V from the arguments passed in the call of the method M.
- the request called by the client C may include a computer object of the JavaScript language recorded according to the JSON notation.
- a tool such as JSONpath will make it possible to find the values V passed as arguments in this object according to the JSON notation.
- the values V can be defined in the URL parameters of the HTTP request made by the client C. If the API interface uses techniques other than a Web architecture, other methods will be used to extract XTR values V in accordance with the interfacing technology used.
- the access control system does not perform the XTR extraction of the V values. Indeed, a Web server will simply check whether a client C whose identity ID is verified CHK can or cannot call an API interface by accessing the corresponding URL. If the call is authorized for the client C whose identity ID is verified CHK, the V values are transmitted to the system S without any additional control.
- the XTR extraction operation is presented here as taking place after the CHK verification operation of the identity ID of the software client C, but in other embodiments, this operation takes place before or the two operations are carried out in parallel.
- the order of execution of these two CHK verification and XTR extraction operations is not important in carrying out the method according to the invention.
- the module 103 of the management entity receives the verified identity ID CHK of the software client C and the values V of the parameters passed as arguments to the call to the method M.
- this data allows the module 103 to query the rule base DB, which is represented in the figure by a question mark.
- the presence or absence of a rule concerning the possibility for the client C with the verified identity ID to make a call to the API interface for the method M with the values V will lead the module 103 to authorize or not the call in question.
- Other embodiments are possible, which do not use a rule base DB.
- the authorization AUT can for example be directly determined by the module 103 from information present in the module 103 itself.
- the call in question is authorized AUT by module 103, which is represented by the OK symbol next to the question mark which represents the query of the rule base DB.
- the call of method M with the values V by client C can therefore continue up to the application programming interface API.
- An essential characteristic of the method according to the invention is that the operations of CHK verification of the identity ID (which can be carried out outside the management entity 100 and is not generally part of the method according to the invention), of XTR extraction of the values V and finally of AUT authorization of the call are executed before access to the interface of the call in question, therefore before the slightest execution of an element of the system S linked to the call.
- all the operations of the method according to the invention take place outside the system S, which allows them to be carried out within the framework of a legacy system S which cannot be modified under any circumstances.
- the main advantage of the invention lies in this possibility of application to an API interface of a legacy system S which cannot be modified.
- the call is authorized AUT, it is transmitted to the API interface.
- the call then accesses the API interface.
- This API interface will then transmit the call to the element of the system S which will carry out the method M, with the value(s) V as argument.
- the execution of the method M interfaced by the application programming interface API will produce the value V'.
- Other values can be produced depending on the nature of the method M called.
- Actions not producing return values can also be carried out by the system S.
- This value V' is obtained by the software client C as a result of the client C calling the method M through the API interface. In certain embodiments of the invention, not shown in the , the obtained value V' will be used by the management entity 100 to add a new authorization rule AUT to the rule base DB using the obtained value V'.
- the architecture of the software client C and the system S which includes the element M interfaced by the API interface is a Web architecture.
- the messages exchanged to access the services of the system S interfaced by the API interface, and in particular the element M, are HTTP requests including HTTP verbs such as GET, POST, PUT etc.
- Other implementations are possible using other application programming interface query techniques.
- the software client C issues an HTTP request to a system S to obtain the roaming status of a mobile phone.
- the system S may be a legacy system, present in the information system of a telecommunications operator.
- the access control of the Web server only concerns the possibility for a given client C to request a Web service. It is up to the Web service to ensure that the request can relate to such and such a value.
- the system S cannot be modified and provides the roaming status for a given number num in return for an HTTP GET status(num) request without checking that the software client C is legitimate to obtain this information. This situation is classic for a system S intended only to provide information to other applications in the information system of the telecommunications operator which are therefore by nature legitimate to obtain the information from the system S.
- the S system cannot generally be modified. Fine-grained access rights management cannot be added to it.
- the access control implemented by the web server to provide access to the S system API interface is also not suitable. The invention is particularly useful in this situation.
- the software client C for example a component of a bank's information system, wants to query the application programming interface (API) of the system S to find out the roaming status of a mobile phone. This information can be accessed by sending the HTTP request GET status(num1) to the API interface.
- API application programming interface
- the management entity 100 is, for example, in this embodiment, a component of the web server that provides access to the API interface in the form of HTTP requests.
- the management entity 100 will check CHK the identity ID of the software client C and extract XTR the values V from the call to the API interface. This is the telephone number num1. In other embodiments, this verification is carried out by another entity that then provides and confirms the identity ID of the software client C to the management entity 100.
- the authorization module 103 proceeds by querying a rule base DB.
- Other embodiments are possible not involving a rule base.
- Two rules present in the rule base DB indicate on the one hand that the query of the roaming status request is possible in general for the client C whose identity ID is verified and furthermore that this query is authorized OK for the telephone number num1.
- the module 103 of the management entity 100 will therefore authorize AUT access to the API interface of the call by the client C whose identity is ID of the request giving the roaming status for the telephone number num1.
- This call therefore continues towards the application programming interface API which interfaces the system S.
- the latter is ready to respond and will therefore respond to the software client C.
- the query technology of the API interface is a Web service
- the system S first responds with a 200 OK information message which is a standard message of the HTTP protocol.
- System S which is a legacy system, without modification, responds and gives the roaming status through the API interface, which it does every time it is requested and is available.
- the information is transferred to the software client C.
- the software client C wants to query the roaming status for the phone number num2.
- querying the rule base DB by module 103 shows that the software client C whose identity ID has been checked CHK is not authorized NOK to obtain the roaming status of the phone number num2.
- the information can be explicitly given in a rule of the DB, as shown in the , or, in other examples, the absence of a rule explicitly authorizing client C's access to the information will be sufficient for module 103 not to authorize AUT to continue the call and to access the API interface.
- the call from client C is therefore not authorized AUT and the management entity 100 responds with a 403 Forbidden information message which is a standard message of the HTTP protocol to the software client C.
- Other standard messages can be used preferably, for example the 404 Not Found message in order not to provide information to a possible attacker.
- the call is not authorized AUT to access the API interface by the management entity 100 after querying the rule base DB, and consequently, an error is returned to the software client.
- the call is not forwarded to the API interface of system S. Since this legacy system could not be modified, if the call had been forwarded, system S would have executed the call and provided a response. Customer C, an element of a bank's information system, in the absence of the invention, could access the roaming status of any mobile phone, which would be a significant security vulnerability for the telecommunications operator's information system.
- the invention therefore makes it possible to open the API interfaces of legacy systems S to third parties, without having to modify them, and while preserving their security.
- the architecture of the software client C and the system S is a Web architecture and the messages exchanged to access the services of the system S interfaced by the API interface are HTTP requests including HTTP verbs such as GET, POST, PUT etc.
- HTTP requests including HTTP verbs such as GET, POST, PUT etc.
- Other implementations are possible using other application programming interface query techniques such as SOAP or CORBA or others.
- system S is an element of the information system of a telecommunications operator.
- the invention can be applied in any industrial field in addition to that included in the examples presented here.
- the objective is to allow a client of the operator to carry out certain management operations by itself.
- a software client C can call the API interface of the system S by sending an HTTP POST request mgmt(num) to indicate its desire to carry out certain management actions (translation of the English management , abbreviated to mgmt) for the telephone number num in the future.
- the management entity 100 will carry out an access control as described in the example of the in order to ensure that this request is authorized.
- the software client C can be, for example, a mobile application, hosted in the smartphone whose telephone number is num and this application can have a unique identifier ID.
- the authorization module 103 uses a DB rule base to decide whether or not a given call can access the API interface.
- the management entity 100 can then have in its DB rule base that only the software client C provided with the identifier ID is authorized AUT to post the HTTP request POST mgmt(num) to the system S.
- This authorization method AUT already described in the , is not further detailed here.
- the system S transmits to the client C the information message 200 OK which is a standard message of the HTTP protocol then provides the client C with a value V', namely in this example a management identifier hdlr1 (abbreviated from the English handler ) which will subsequently allow the software client C to carry out management operations by addressing other requests to the API interface of the system S.
- V' namely in this example a management identifier hdlr1 (abbreviated from the English handler ) which will subsequently allow the software client C to carry out management operations by addressing other requests to the API interface of the system S.
- the management entity 100 retrieves this value V' in return and uses it to create a new rule.
- This operation is represented in the by a rectangle in which a rule is added to the DB base, said rule consisting of authorizing the identifier ID (that of client C) to carry out the management operation data_inc for the management identifier hdlr1.
- the created rule can be managed outside a DB rule base, for example by programming another system.
- This management operation has for example the effect of increasing the data plan allocated to the telephone number corresponding to the management identifier hdlr1.
- Other rules, corresponding to other management operations, can of course be added.
- the software client C can actually call the API interface with the HTTP request PUT data_inc(hdlr1).
- This request is authorized AUT by the management entity since the corresponding rule was previously added to the rule base DB using the return value V', namely the management identifier hdlr1.
- the effect of this request will then be, for example, to increase the data plan assigned to the telephone number corresponding to the management identifier hdlr1.
- the same HTTP request made by the same software client C but for another management identifier hdlr2 will not be authorized.
- the management entity 100 responds with a 403 Forbidden information message which is a standard message of the HTTP protocol to the software client C.
- the added R rule ADD is associated with a validity period.
- the added R rule ADD will therefore only be active for a limited duration.
- the validity period can be transmitted in the arguments obtained in return from the call and execution of the element M.
- the validity period is defined a priori by the management entity 100. The two embodiments can be combined.
- Some types of added R rules ADD can have a validity period provided in return by the element M while others will have a predefined duration.
- the predefined duration can also be a default validity period which will be applied if a duration is not present in the values provided in return from the call of the element M.
- module can correspond to a software component as well as to a hardware component or a set of hardware and software components, a software component itself corresponding to one or more computer programs or sub-programs or, more generally, to any element of a program capable of implementing a function or a set of functions as described for the modules concerned.
- a hardware component corresponds to any element of a hardware assembly capable of implementing a function or a set of functions for the module concerned (integrated circuit, smart card, memory card, etc.).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Stored Programmes (AREA)
- Telephonic Communication Services (AREA)
- Storage Device Security (AREA)
Abstract
Description
Le domaine technique est celui de l’informatique.The technical field is that of IT.
Plus précisément, l’invention se rapporte à un procédé de gestion de l’appel par un client d’une interface de programmation applicative. More specifically, the invention relates to a method for managing the call by a client of an application programming interface.
Une interface de programmation applicative (traduction de l’anglais application programming interface, rendu par l’acronyme API) est un moyen pour un logiciel donné de donner à d’autres logiciels l’accès à des données ou à des fonctionnalités rendues par le logiciel donné. Le logiciel qui offre l’accès à des données ou à des fonctionnalités ou en général à un de ses éléments rend un service à d’autres logiciels qui sont en général dénommées comme étant les clients du service offert. On parle alors d’une architecture client-serveur. Dans cette dénomination, la notion de service (l’accès à une donnée ou à une fonctionnalité ou à tout autre élément à travers une interface de programmation applicative) est confondue avec une notion de serveur (une machine réelle ou virtuelle sur laquelle s’exécute un ou plusieurs logiciels qui rendent des services). Cette dénomination est cependant utilisée largement par l’homme du métier. An application programming interface (API) is a way for a given software to give other software access to data or functionalities provided by the given software. The software that provides access to data or functionalities or in general to one of its elements provides a service to other software which are generally referred to as the clients of the service offered. This is called a client-server architecture. In this term, the concept of service (access to data or functionality or any other element through an application programming interface) is confused with the concept of server (a real or virtual machine on which one or more software programs that provide services run). This term is, however, widely used by those skilled in the art.
Les architectures client-serveur et l’utilisation d’APIs sont très répandues en informatique. Dans une telle architecture, un serveur informatique est disposé dans un réseau de communication dans lequel sont également présents des clients. Les clients peuvent adresser, par l’intermédiaire du réseau de communication, des requêtes au serveur permettant d’accéder aux différents services offerts à travers une API. Le serveur réalisera un contrôle d’accès pour vérifier si le client est autorisé à accéder au service demandé, et le fournira si c’est le cas. Le service demandé pourra être par exemple la fourniture d’une donnée qui sera alors lue par le client pour traitement ultérieur ou bien l’exécution d’une action particulière. En général, un serveur pourra être interrogé par plusieurs clients différents. Client-server architectures and the use of APIs are widespread in computing. In such an architecture, a computer server is placed in a communications network in which clients are also present. Clients can send requests to the server via the communications network, allowing access to the various services offered through an API. The server will perform an access control to verify whether the client is authorized to access the requested service, and will provide it if so. The requested service could be, for example, the provision of data that will then be read by the client for further processing or the execution of a specific action. In general, a server can be queried by several different clients.
La requête sera émise par le client en utilisant un protocole de communication donné. Un protocole qui peut être utilisé dans ce contexte est le protocole HTTP (acronyme de l’anglais Hyper Text Transfer Protocol). Ce protocole est à l’origine utilisé pour permettra le transfert d’informations d’un site Web vers un navigateur Web ainsi que la navigation Web en général, mais les requêtes GET et POST présentes dans le protocole HTTP peuvent aussi être utilisées pour transférer des données d’un client vers un serveur et recevoir des données en retour. On parle alors de service Web, traduction de l’anglais web service. On peut également remarquer que la consultation de sites Web en général se fait selon une architecture client-serveur, où le navigateur Web joue le rôle d’un client, le serveur Web est un serveur, et la requête du client vers le serveur consiste à récupérer le contenu d’un site Web depuis un serveur afin de pouvoir l’afficher dans le navigateur. Mais il est possible d’utiliser le protocole HTTP dans le cadre d’une architecture client-serveur et de la mise à disposition de services Web pour récupérer tout type de données, ou pour commander tout type d’action, sans se limiter à la navigation et à l’affichage de sites Web. Dans le cas où l’architecture client-serveur utilise HTTP comme protocole de communication, le système de contrôle d’accès utilisé sera celui du protocole HTTP lui-même. Dans ce cas, un client adressera une requête selon le protocole HTTP à un serveur identifié par une adresse donnée par un identifiant uniforme de ressource, ou URI (acronyme de l’anglais Uniform Resource Identifier). The request will be issued by the client using a given communication protocol. One protocol that can be used in this context is the HTTP protocol (acronym for Hyper Text Transfer Protocol ). This protocol is originally used to allow the transfer of information from a website to a web browser as well as web browsing in general, but the GET and POST requests present in the HTTP protocol can also be used to transfer data from a client to a server and receive data in return. This is called a web service. It can also be noted that browsing websites in general is done according to a client-server architecture, where the web browser plays the role of a client, the web server is a server, and the request from the client to the server consists of retrieving the content of a website from a server in order to be able to display it in the browser. But it is possible to use the HTTP protocol within a client-server architecture and the provision of web services to retrieve any type of data, or to control any type of action, without being limited to browsing and displaying websites. In the case where the client-server architecture uses HTTP as the communication protocol, the access control system used will be that of the HTTP protocol itself. In this case, a client will send a request using the HTTP protocol to a server identified by an address given by a uniform resource identifier, or URI (acronym for Uniform Resource Identifier ).
L’appel d’une API se décompose classiquement en deux éléments. Le premier est le nom d’une méthode appelée ; le second est la ou les valeurs d’arguments passés en paramètres à la méthode appelée. Par exemple, dans le cas d’un service Web, la méthode appelée sera définie par un verbe du protocole HTTP (par exemple, le verbe GET) ainsi que par l’URI appelée, et la ou les valeurs d’arguments appelés pourront être passés en paramètres dans l’appel HTTP. L’appel de la méthode permet d’accéder à tout type d’élément du service. An API call is typically broken down into two elements. The first is the name of a called method; the second is the argument value(s) passed as parameters to the called method. For example, in the case of a web service, the called method will be defined by an HTTP protocol verb (for example, the verb GET) as well as by the called URI, and the called argument value(s) can be passed as parameters in the HTTP call. Calling the method allows access to any type of element of the service.
Prenons comme exemple une API qui permet de connaître le statut d’itinérance (traduction de l’anglais roaming) d’un téléphone mobile. Un opérateur de télécommunications pourra définir et déployer dans ses réseaux un service Web qui permet d’obtenir cette information, ou toute autre technique permettant d’offrir une API. Dans le cas d’un service Web, l’information sera par exemple obtenue en réalisant l’appel suivant : Let's take as an example an API that allows you to know the roaming status of a mobile phone. A telecommunications operator can define and deploy in its networks a Web service that allows you to obtain this information, or any other technique that allows you to offer an API. In the case of a Web service, the information will be obtained, for example, by making the following call:
GET http:/API/roaming_status?tel_num=’+33123456789’ GET http:/API/roaming_status?tel_num=’+33123456789’
D’autres APIs peuvent être accessibles sous l’adresse http:/API. Dans l’exemple ci-dessus, la méthode appelée est dénommée roaming_status et un paramètre dénommé tel_num est passé en argument, avec la valeur +33123456789 qui est le numéro de téléphone pour lequel le statut d’itinérance est demandé. Other APIs can be accessed at http:/API. In the example above, the method called is called roaming_status and a parameter called tel_num is passed as an argument, with the value +33123456789, which is the phone number for which the roaming status is requested.
En retour, le client recevra une chaîne de caractères qui contient l’information demandée. Par exemple, une chaîne ’roaming=yes_country=Thailand’ indique que le téléphone demandé est bien en itinérance et se trouve en Thaïlande. D’autres formats de réponse peuvent bien sûr être définis. De plus, les arguments de la méthode peuvent être passés dans d’autres formats, par exemple dans des objets JavaScript qui utiliseront la notation JSON (acronyme de l’anglais JavaScript Object Notation) ou des objets écrits en langage XML (acronyme de l’anglais Extensible Markup Language). In return, the client will receive a string containing the requested information. For example, a string of 'roaming=yes_country=Thailand' indicates that the requested phone is indeed roaming and is located in Thailand. Other response formats can of course be defined. In addition, the method arguments can be passed in other formats, for example, JavaScript objects using JSON ( JavaScript Object Notation ) or objects written in XML ( Extensible Markup Language ).
L’exemple donné ci-dessus s’inscrit dans le cadre où l’interface de programmation applicative est programmée comme un service Web mais d’autres techniques de déploiement d’APIs existent, comme la technologie CORBA (acronyme de l’anglais Common Object Request Broker Architecture) ou SOAP (acronyme de l’anglais Simple Object Access Protocol). The example given above is in the context where the application programming interface is programmed as a web service but other API deployment techniques exist, such as CORBA (acronym for Common Object Request Broker Architecture ) or SOAP (acronym for Simple Object Access Protocol ) technology.
Un point important des architectures client-serveur et des interfaces de programmation applicatives est la technique de contrôle d’accès retenue. En effet, une ressource donnée ne doit pouvoir être accédée que par un client autorisé. Pour cela, un système de contrôle d’accès est mis en place. Le contrôle d’accès s’assure qu’un client donné, lorsqu’il appelle une API pour obtenir une ressource, est d’une part identifié et d’autre part autorisé à appeler la méthode de l’API. An important aspect of client-server architectures and application programming interfaces is the access control technique used. A given resource must only be accessible by an authorized client. To achieve this, an access control system is implemented. Access control ensures that a given client, when calling an API to obtain a resource, is both identified and authorized to call the API method.
Dans le cas où l’architecture client-serveur utilise HTTP comme protocole de communication, le système de contrôle d’accès utilisé pourra être celui du protocole HTTP lui-même. Dans ce cas, comme on l’a vu, un client adressera une requête selon le protocole HTTP à un service identifié par une adresse donnée par un identifiant uniforme de ressource, ou URI (acronyme de l’anglais Uniform Resource Identifier). La requête sera alors acceptée ou refusée par le serveur Web hébergeant le service Web identifié par l’URI selon les conditions données par le protocole HTTP. Le client fournit dans un en-tête de la requête son identifiant et un mot de passe ou un haché cryptographique de mot de passe, selon le mode d’authentification retenu. Si le client est autorisé à accéder à la ressource, c’est-à-dire à l’URI, et si le mot de passe correspond bien à l’identifiant du client, la requête sera traitée par le serveur Web et la ressource accédée par le client.In the case where the client-server architecture uses HTTP as the communication protocol, the access control system used may be that of the HTTP protocol itself. In this case, as we have seen, a client will send a request using the HTTP protocol to a service identified by an address given by a uniform resource identifier, or URI (acronym for Uniform Resource Identifier ). The request will then be accepted or refused by the web server hosting the web service identified by the URI according to the conditions given by the HTTP protocol. The client provides in a header of the request its identifier and a password or a cryptographic password hash, depending on the authentication method chosen. If the client is authorized to access the resource, that is to say the URI, and if the password corresponds to the client's identifier, the request will be processed by the web server and the resource accessed by the client.
Dans les architectures client-serveur, le système de contrôle d’accès se limite à vérifier que le client identifié a bien l’autorisation d’appeler la méthode qu’il appelle et de le bloquer si ce n’est pas le cas. Pour reprendre l’exemple donné ci-dessus d’accès au statut d’itinérance d’un téléphone mobile, un client autorisé à accéder à l’API GET http:/API/roaming_status pourra réaliser cet appel pour n’importe quelle valeur du paramètre tel_num, c’est-à-dire pour n’importe quel numéro de téléphone mobile. In client-server architectures, the access control system is limited to checking that the identified client has the authorization to call the method it calls and blocking it if this is not the case. To take the example given above of accessing the roaming status of a mobile phone, a client authorized to access the GET http:/API/roaming_status API can make this call for any value of the tel_num parameter, that is, for any mobile phone number.
Cette situation présente des inconvénients. This situation has drawbacks.
Comme le contrôle d’accès ne porte que sur la méthode appelée, un client autorisé pourra accéder à la méthode demandée pour toutes les valeurs possibles des arguments passés en paramètre à la méthode. Pour reprendre l’exemple de l’API fournissant le statut d’itinérance d’un téléphone mobile, cette information peut être intéressante pour des entreprises en dehors du secteur des télécommunications. Une banque, par exemple, peut détecter que des paiements sont effectués par une carte de crédit en Thaïlande et suspecter une fraude. En consultant le statut d’itinérance du téléphone mobile du propriétaire de la carte de crédit en question, la banque peut avoir une information sur la localisation du propriétaire et confirmer ou infirmer que sa carte de crédit est victime d’une fraude, s’il se trouve bien actuellement en Thaïlande. Un opérateur de télécommunications peut donc trouver intérêt à vendre à une banque l’accès à l’API donnant ce statut d’itinérance. Mais l’opérateur de télécommunications doit également protéger la confidentialité des données de ses clients. Or, donner l’accès à l’API à une banque permettra à cette dernière de connaître le statut d’itinérance de tous les téléphones mobiles gérés par l’opérateur de télécommunications et pas seulement de ceux qui appartiennent à des clients de la banque. Dans le cas de systèmes hérités (traduction de l’anglais legacy systems), il n’est pas possible, ou en tout cas très difficile, de modifier les programmes développés. Ceux-ci peuvent par exemple avoir été développés dans des langages de programmation qui ne sont plus usités. Ou bien, le programme a été développé par un fournisseur qui déclare ne plus pouvoir ou vouloir le modifier, ou en tout cas pas pour un prix acceptable. En l’absence de possibilité de modifier le système hérité, il n’est donc pas possible d’ouvrir à un tiers l’accès à ses APIs pour des raisons de protection de la confidentialité des données de ses clients. Since access control only applies to the called method, an authorized client will be able to access the requested method for all possible values of the arguments passed as parameters to the method. To return to the example of the API providing the roaming status of a mobile phone, this information can be of interest to companies outside the telecommunications sector. A bank, for example, may detect that payments are being made by credit card in Thailand and suspect fraud. By consulting the roaming status of the mobile phone of the owner of the credit card in question, the bank can obtain information on the location of the owner and confirm or deny that his credit card is the victim of fraud, if he is currently in Thailand. A telecommunications operator may therefore find it advantageous to sell a bank access to the API providing this roaming status. But the telecommunications operator must also protect the confidentiality of its customers' data. However, granting a bank access to the API will allow it to know the roaming status of all mobile phones managed by the telecom operator and not just those belonging to the bank's customers. In the case of legacy systems, it is not possible, or at least very difficult, to modify the programs developed. These may, for example, have been developed in programming languages that are no longer in use. Or, the program was developed by a supplier who declares that they can no longer or will not modify it, or at least not for an acceptable price. In the absence of the possibility of modifying the legacy system, it is therefore not possible to open access to its APIs to a third party for reasons of protecting the confidentiality of its customers' data.
Cette situation est fréquente. Toujours dans notre exemple du statut d’itinérance d’un téléphone mobile, l’API a pu être développée initialement pour les besoins internes du système d’information de l’opérateur de télécommunications, par un équipementier de systèmes de télécommunications. Dans un tel développement, pour des besoins internes, il n’était pas vu comme intéressant de pouvoir différencier entre différents clients de l’API. Le fournisseur peut refuser de modifier le développement pour un prix raisonnable. La seule solution est alors une solution contractuelle, c’est-à-dire de demander à un utilisateur externe de l’API de limiter son usage de l’API à des arguments pour lesquels cet usage lui est autorisé mais sans pouvoir assurer par un outil informatique que cette limitation est bien respectée. This situation is common. Still in our example of the roaming status of a mobile phone, the API may have been initially developed for the internal needs of the telecommunications operator's information system, by a telecommunications systems equipment manufacturer. In such a development, for internal needs, it was not seen as interesting to be able to differentiate between different API clients. The supplier may refuse to modify the development for a reasonable price. The only solution is then a contractual solution, that is to say, to ask an external user of the API to limit their use of the API to arguments for which this use is authorized but without being able to ensure by an IT tool that this limitation is respected.
Un autre inconvénient de la situation actuelle est le manque d’évolutivité du contrôle d’accès. Un client donné peut ou non être autorisé à appeler une méthode donnée sans que ne soit précisées les possibilités d’évolution des règles régissant cet accès. Another drawback of the current situation is the lack of scalability of access control. A given client may or may not be allowed to call a given method without specifying how the rules governing this access can evolve.
L’invention vient améliorer la situation.The invention improves the situation.
Selon un premier aspect fonctionnel, l’invention a trait à un procédé de gestion de l’appel par un client logiciel d’une interface de programmation applicative, ledit client logiciel ayant une identité, ledit appel visant à exécuter un élément interfacé par l’interface de programmation applicative, le procédé comprenant les étapes suivantes réalisées pour un appel donné avant l’accès à l’interface :
- Extraction d’une valeur des arguments passés en paramètre par le client logiciel dans l’appel de l’interface de programmation applicative ;
- Autorisation pour l’appel donné d’accéder à l’interface en fonction de l’identité du client logiciel et de la valeur extraite ;
- Si l’appel donné est autorisé à accéder à l’interface, la création d’une règle comprenant une valeur obtenue à la suite de l’exécution de l’élément appelé, ladite règle créée étant relative à une étape d’autorisation ultérieure d’un autre appel.
- Extraction of a value from the arguments passed as parameters by the software client in the call to the application programming interface;
- Authorization for the given call to access the interface based on the software client's identity and the extracted value;
- If the given call is authorized to access the interface, creating a rule including a value obtained as a result of the execution of the called element, said created rule being relative to a subsequent authorization step of another call.
Grâce à l’invention, un contrôle d’accès est réalisé qui s’appuie de surcroît sur l’analyse des valeurs des arguments qui sont passés en paramètre à l’élément appelé lors de l’appel de l’interface de programmation applicative. L’élément qui est destiné à être exécuté à la suite de l’appel à l’interface de programmation applicative appartient à un système logiciel et matériel. Cet élément du système qui est appelé peut être par exemple une méthode, qui va exécuter un ou plusieurs calculs et rendre des données, ou exécuter diverses actions, ou bien une requête de base de données qui se contentera alors de fournir une ou plusieurs données en réponse, ou tout autre élément informatique. L’élément appelé est un élément logiciel qui s’appuie pour son exécution sur différents éléments matériels et logiciels présents dans un système plus vaste, interfacé par l’interface de programmation applicative. Ce système sera le plus souvent un système hérité, qui ne peut être modifié, mais l’invention peut s’appliquer à des systèmes développés récemment. Thanks to the invention, an access control is carried out which is also based on the analysis of the values of the arguments which are passed as parameters to the element called when calling the application programming interface. The element which is intended to be executed following the call to the application programming interface belongs to a software and hardware system. This element of the system which is called can be for example a method, which will execute one or more calculations and return data, or execute various actions, or a database query which will then simply provide one or more data in response, or any other computer element. The called element is a software element which relies for its execution on different hardware and software elements present in a larger system, interfaced by the application programming interface. This system will most often be a legacy system, which cannot be modified, but the invention can be applied to recently developed systems.
Dans un mode de réalisation, le procédé comprend également une étape de vérification de l’identité du client logiciel. Dans ce cas, le contrôle d’accès est réalisé au moment de la vérification de l’identité du client logiciel, c’est-à-dire au moment où il est contrôlé que le client est bien autorisé à appeler l’interface. In one embodiment, the method also comprises a step of verifying the identity of the software client. In this case, the access control is carried out at the time of verifying the identity of the software client, i.e. at the time when it is checked that the client is authorized to call the interface.
Dans tous les cas, le contrôle portant sur les valeurs passés en paramètre de l’appel, c’est-à-dire l’étape d’autorisation est réalisée avant l’accès à l’interface et donc l’exécution de l’élément visé par l’appel. Comme cette vérification est réalisée avant l’accès à l’interface de l’élément appelé, elle est faite en dehors du système logiciel qui est interfacé par l’interface de programmation applicative. De cette manière, le contrôle d’accès qui réalise une gestion fine des droits d’accès peut être déployé y compris quand le système interfacé est un système hérité, qui ne peut pas être modifié. In all cases, the control over the values passed as parameters of the call, i.e. the authorization step, is carried out before accessing the interface and therefore the execution of the element targeted by the call. As this verification is carried out before accessing the interface of the called element, it is done outside the software system that is interfaced by the application programming interface. In this way, access control that performs fine-grained management of access rights can be deployed even when the interfaced system is a legacy system, which cannot be modified.
De plus, le procédé comprend, si l’appel donné est autorisé à accéder à l’interface, une étape de création d’une règle comprenant une valeur obtenue à la suite de l’exécution de l’élément appelé, ladite règle créée étant relative à une étape d’autorisation ultérieure d’un autre appel. Furthermore, the method comprises, if the given call is authorized to access the interface, a step of creating a rule comprising a value obtained following the execution of the called element, said created rule relating to a subsequent step of authorization of another call.
Dans un mode de réalisation, la création d’une règle comprend l’ajout d’une règle dans une base de règles. In one embodiment, creating a rule includes adding a rule to a rule base.
Grâce à cette création de règle, le système de contrôle d’accès selon l’invention est évolutif. Le contrôle d’accès se fonde sur un ensemble de règles autorisant ou non l’accès du client à l’interface en fonction des valeurs des paramètres de l’appel à autoriser. Le contrôle d’accès va dépendre de résultats de l’exécution de l’élément appelé par le client logiciel. Ceci permet au système d’évoluer mais aussi de fournir facilement à une base de règles les règles nécessaires à son fonctionnement. Lors de la première mise en œuvre du procédé, la création de règles permettra de créer facilement un ensemble de règles d’autorisation pour les utilisations ultérieures du procédé. Thanks to this rule creation, the access control system according to the invention is scalable. Access control is based on a set of rules authorizing or not authorizing the client's access to the interface depending on the values of the parameters of the call to be authorized. Access control will depend on the results of the execution of the element called by the software client. This allows the system to evolve but also to easily provide a rule base with the rules necessary for its operation. During the first implementation of the method, the creation of rules will make it possible to easily create a set of authorization rules for subsequent uses of the method.
Selon un premier mode de mise en œuvre particulier de l’invention, la règle créée est une règle autorisant un appel ultérieur du même client logiciel vers la même interface de programmation applicative. According to a first particular mode of implementation of the invention, the rule created is a rule authorizing a subsequent call from the same software client to the same application programming interface.
Dans ce mode de réalisation, la forme de la règle créée ou ajoutée à une base de règles est précisée. Il s’agit ici uniquement d’une règle d’autorisation, et exactement pour le même client et pour le même appel. Ce mode permet de peupler aisément la base de règles des autorisations nécessaires à l’utilisation de l’interface de programmation applicative. In this embodiment, the form of the rule created or added to a rule base is specified. This is only an authorization rule, and for exactly the same client and for the same call. This mode makes it easy to populate the rule base with the authorizations necessary for using the application programming interface.
Selon un autre mode de réalisation, qui pourra être mis en œuvre alternativement ou cumulativement avec le mode précédents, la règle créée est associée à une durée de validité. According to another embodiment, which may be implemented alternatively or cumulatively with the previous mode, the rule created is associated with a validity period.
Grâce à ce mode de réalisation, l’ensemble des règles utilisées pour définir les autorisations d’accès évolue dans le temps. Une autorisation peut ainsi être donnée de façon temporaire, afin de pouvoir réaliser une opération pendant un temps limité seulement, puis de l’interdire afin de protéger la ressource accédée par l’appel. Ce type d’autorisation temporaire peut particulièrement bien s’appliquer aux opérations de commerce électronique tels que l’achat d’un panier collecté sur un site de commerce électronique ou bien aux opérations de mise à jour d’un compte client, comme la validation d’un nouveau mot de passe. With this implementation, the set of rules used to define access authorizations evolves over time. An authorization can thus be given temporarily, in order to be able to carry out an operation for a limited time only, then prohibit it in order to protect the resource accessed by the call. This type of temporary authorization can particularly well apply to e-commerce operations such as the purchase of a basket collected on an e-commerce site or to operations for updating a customer account, such as validating a new password.
Selon un mode de réalisation, qui pourra être mis en œuvre cumulativement avec le mode précédent, la durée de validité associée à la règle ajoutée est déterminée par une valeur obtenue à la suite de l’exécution de l’élément appelé. According to one embodiment, which may be implemented cumulatively with the previous embodiment, the validity period associated with the added rule is determined by a value obtained following the execution of the called element.
Selon un mode de réalisation, qui pourra être mis en œuvre alternativement avec le mode précédent, la durée de validité associée à la règle ajoutée est une valeur fixée à l’avance. According to one embodiment, which may be implemented alternatively with the previous mode, the validity period associated with the added rule is a value fixed in advance.
Grâce à ces deux modes de réalisation, le fonctionnement de l’évolution dans le temps des règles est précisé. Cette évolution peut être pilotée par le système interfacé qui fournit, en même temps que les valeurs qui définissent la règle ajoutée, sa durée de validité. Ou bien la durée de validité est définie a priori ce qui veut dire que l’ensemble des règles finissent par se périmer au bout d’un certain temps. Ces deux modes peuvent se combiner, à savoir que les deux modes peuvent s’appliquer suivant la nature de la règle ajoutée, ou bien la durée définie à l’avance peut ne s’appliquer que si la durée de validité n’est pas transmise par une valeur obtenue suite à l’exécution de l’élément appelé. Thanks to these two embodiments, the functioning of the evolution over time of the rules is specified. This evolution can be controlled by the interfaced system which provides, at the same time as the values which define the added rule, its validity period. Or the validity period is defined a priori which means that all the rules end up expiring after a certain time. These two modes can be combined, namely that the two modes can apply depending on the nature of the added rule, or the duration defined in advance can only apply if the validity period is not transmitted by a value obtained following the execution of the called element.
Selon un autre mode de réalisation, qui pourra être mis en œuvre alternativement ou cumulativement avec les modes précédents, si l’appel n’est pas autorisé après interrogation de la base de règles, une erreur est renvoyée au client logiciel. According to another embodiment, which may be implemented alternatively or cumulatively with the previous modes, if the call is not authorized after querying the rule base, an error is returned to the software client.
Grâce à ce mode de réalisation, une information est fournie au client logiciel si son accès à l’interface de programmation applicative est refusé pour les valeurs des arguments soumis comme paramètres. Le client logiciel pourra ainsi modifier son appel si besoin ou transmettre l’information à des utilisateurs ou à d’autres composants logiciels. Ses informations sont fournies sans que l’élément ni le système interfacé par l’interface de programmation applicative n'aient eu à intervenir. With this embodiment, information is provided to the software client if its access to the application programming interface is denied for the values of the arguments submitted as parameters. The software client can then modify its call if necessary or transmit the information to users or other software components. Its information is provided without the element or the system interfaced by the application programming interface having to intervene.
Selon un autre mode de réalisation, qui pourra être mis en œuvre alternativement ou cumulativement avec les modes précédents, l’appel est un appel d’un service Web utilisant le verbe POST et une règle créée est une règle autorisant un appel ultérieur du même client logiciel sur le même service Web utilisant l’un des verbes GET, HEADER, PUT ou PATCH. According to another embodiment, which may be implemented alternatively or cumulatively with the previous embodiments, the call is a call to a Web service using the POST verb and a rule created is a rule authorizing a subsequent call from the same software client to the same Web service using one of the verbs GET, HEADER, PUT or PATCH.
Grâce à ce mode de réalisation, la constitution des règles est facilitée. Le client logiciel est autorisé à réaliser un appel de l’API avec un verbe POST. En retour, une référence est obtenue, qui pourra être utilisée par un appel avec un autre verbe et cet appel ultérieur est autorisé par les règles. This implementation makes it easier to create rules. The client software is allowed to make an API call with a POST verb. In return, a reference is obtained, which can be used by a call with another verb, and this subsequent call is authorized by the rules.
Selon un autre mode de réalisation, qui pourra être mis en œuvre alternativement ou cumulativement avec les modes précédents, l’appel est un appel d’un service Web et les arguments de la méthode appelée sont présents dans un objet informatique utilisant la notation JSON. According to another embodiment, which may be implemented alternatively or cumulatively with the previous embodiments, the call is a call to a Web service and the arguments of the called method are present in a computer object using JSON notation.
Grâce à ce mode de réalisation, l’invention est appliquée aux services Web, qui forment une catégorie très répandue des architectures client-serveur. Les valeurs des arguments transmises comme paramètres des méthodes appelées peuvent être regroupées dans un objet informatique utilisant la notation JSON. Un outil tel que JSONpath peut alors permettre d’accéder aux valeurs en question présentes dans l’objet. With this embodiment, the invention is applied to web services, which form a very widespread category of client-server architectures. The values of the arguments passed as parameters of the called methods can be grouped into a computer object using JSON notation. A tool such as JSONpath can then provide access to the values in question present in the object.
Selon un premier aspect matériel, l’invention se rapporte à une entité de gestion gérant l’appel par un client logiciel d’une interface de programmation applicative, ledit client logiciel ayant une identité, ledit appel visant à exécuter un élément interfacé par l’interface de programmation applicative, l’entité de gestion comprenant les modules suivants :
- Un module d’extraction d’une valeur des arguments passés en paramètre par le client logiciel dans l’appel de l’interface de programmation applicative ;
- Un module d’autorisation pour l’appel donné d’accéder à l’interface en fonction de l’identité du client logiciel et de la valeur extraite, ledit module d’autorisation étant apte à créer une règle comprenant une valeur obtenue à la suite de l’exécution de l’élément appelé lorsque l’appel donné est autorisé à accéder à l’interface, ladite règle créée étant relative à une étape d’autorisation ultérieure d’un autre appel ;
- A module for extracting a value from the arguments passed as parameters by the software client in the call to the application programming interface;
- An authorization module for the given call to access the interface based on the identity of the software client and the extracted value, said authorization module being able to create a rule comprising a value obtained following the execution of the called element when the given call is authorized to access the interface, said created rule being relative to a subsequent authorization step of another call;
et caractérisée en ce que, pour un appel donné, les étapes d’extraction et d’autorisation sont toutes réalisées avant l’accès à l’interface. and characterized in that, for a given call, the extraction and authorization steps are all carried out before accessing the interface.
Selon un mode de réalisation du premier aspect matériel, l’entité de gestion comprend de surcroît une base de règles, lesdites règles étant relatives à l’autorisation pour l’appel d’accéder à l’interface. According to an embodiment of the first material aspect, the management entity further comprises a rule base, said rules relating to the authorization for the call to access the interface.
Selon un autre aspect matériel, l’invention a trait à un programme d'ordinateur apte à être mis en œuvre par une entité de gestion, le programme comprenant des instructions de code qui, lorsqu’il est exécuté par un processeur, réalise les étapes du procédé de gestion défini ci-dessus. According to another material aspect, the invention relates to a computer program capable of being implemented by a management entity, the program comprising code instructions which, when executed by a processor, carry out the steps of the management method defined above.
Enfin, selon un autre aspect matériel, l’invention a trait à un support de données sur lequel est enregistré un programme d’ordinateur comprenant des séquences d’instructions pour la mise en œuvre du procédé de gestion défini ci-dessus. Finally, according to another material aspect, the invention relates to a data medium on which is recorded a computer program comprising sequences of instructions for implementing the management method defined above.
Le support de données peut être n'importe quelle entité ou dispositif capable de stocker les programmes. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique tel qu’un un disque dur. D'autre part, le support peut être un support transmissible tels qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Le programme selon l’invention peut utiliser tout type de technologie informatique en terme de langages de programmation compilés, interprétés, ou une combinaison des deux ainsi qu’en terme de systèmes d’exploitation. The data carrier may be any entity or device capable of storing the programs. For example, the carrier may comprise a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording means such as a hard disk. On the other hand, the carrier may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means. The program according to the invention may in particular be downloaded from a network such as the Internet. Alternatively, the information carrier may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the method in question. The program according to the invention may use any type of computer technology in terms of compiled, interpreted programming languages, or a combination of both as well as in terms of operating systems.
L'invention sera mieux comprise à la lecture de la description qui suit, donnée à titre d'exemple, et faite en référence aux dessins annexées sur lesquels : The invention will be better understood on reading the following description, given by way of example, and made with reference to the appended drawings in which:
La
Dans l’exemple de réalisation représenté dans la
- Un module 101 de vérification CHK de l’identité ID du client logiciel C ;
- Un module 102 d’extraction XTR des valeurs V des arguments passés en appel ;
- Un module 103 d’autorisation AUT de l’accès à l’interface ;
- Une base de règles DB.
- A 101 module for CHK verification of the identity ID of the software client C;
- A module 102 for extracting XTR values from the arguments passed in the call;
- A 103 module for authorizing AUT access to the interface;
- A DB rule base.
Dans d’autres exemples de réalisation, l’entité de gestion 100 ne comprend pas un module 101 de vérification ni une base de règles DB. In other exemplary embodiments, the management entity 100 does not include a verification module 101 or a rule base DB.
Le client C, l’entité de gestion 100 et le système S sont reliés entre eux par un réseau de communication non représenté dans la
Le client logiciel C s’exécute sur un matériel qui présente l’architecture matérielle d’un ordinateur conventionnel. Ce matériel comporte notamment un processeur, une mémoire vive de type RAM et une mémoire morte telle qu’une mémoire de type Flash, ROM, (non représentés sur la figure) et peut comporter des dispositifs d’entrée-sortie tels que claviers et/ou écrans (non représentés sur la figure). Dans tous les cas, le matériel sur lequel s’exécute le client C comporte des moyens de communication qui lui permettent d’accéder à un ou plusieurs réseaux de communication. Ce matériel peut être par exemple un ordinateur ou bien un ordiphone (traduction de l’anglais smartphone) ou bien des composants matériels d’une architecture en nuage (traduction de l’anglais cloud architecture). The software client C runs on hardware that has the hardware architecture of a conventional computer. This hardware includes in particular a processor, a RAM type random access memory and a read-only memory such as a Flash or ROM type memory (not shown in the figure) and may include input-output devices such as keyboards and/or screens (not shown in the figure). In all cases, the hardware on which the client C runs includes communication means that allow it to access one or more communication networks. This hardware may be, for example, a computer or a smartphone or hardware components of a cloud architecture .
Le système logiciel S est également hébergé dans un matériel qui présente l’architecture matérielle d’un ordinateur conventionnel. Il comporte notamment un processeur, une mémoire vive de type RAM et une mémoire morte telle qu’une mémoire de type Flash, ROM, (non représentés sur la figure) et peut comporter des dispositifs d’entrée-sortie tels que claviers et/ou écrans (non représentés sur la figure). Dans tous les cas, le matériel sur lequel s’exécute le client C comporte des moyens de communication qui lui permettent d’accéder à un ou plusieurs réseaux de communication. Ce matériel peut être par exemple un ordinateur ou bien un ordiphone (traduction de l’anglais smartphone) ou bien des composants matériels d’une architecture en nuage (traduction de l’anglais cloud architecture) ou bien un serveur. The software system S is also hosted in hardware that has the hardware architecture of a conventional computer. It includes in particular a processor, a RAM type random access memory and a read-only memory such as a Flash, ROM type memory (not shown in the figure) and may include input-output devices such as keyboards and/or screens (not shown in the figure). In all cases, the hardware on which the client C runs includes communication means that allow it to access one or more communication networks. This hardware may be, for example, a computer or a smartphone or hardware components of a cloud architecture or a server.
L’élément M présent dans le système S est appelé à travers l’interface API. Il peut s’agir d’une méthode informatique, d’une requête à une base de données ou tout autre élément informatique. L’élément M comprend l’exécution d’une partie logicielle sur des éléments matériels qui peuvent appartenir au système S ou bien être déporté sur des éléments matériels extérieurs dans le cas d’une architecture en nuage. The element M present in the system S is called through the API interface. It can be a computer method, a query to a database or any other computer element. The element M includes the execution of a software part on hardware elements that can belong to the system S or be deported to external hardware elements in the case of a cloud architecture.
Le client logiciel C et le système S forment une architecture client-serveur, c’est-à-dire que le système S offre, par l’intermédiaire de l’interface de programmation applicative API, la possibilité à plusieurs clients logiciels C d’obtenir des données ou de faire réaliser des opérations en effectuant un appel à travers l’interface API. Dans l’exemple représenté ici, l’opération réalisée à travers l’interface API est l’appel de la méthode M. La même interface API peut permettre d’appeler d’autres éléments du système S. Et de plus, le système S peut comprendre d’autres interfaces donnant accès à d’autres éléments logiciels et matériels. De cette manière, le client C n’est pas un programme monolithique mais utilise des données et fonctions rendues par le système S. The software client C and the system S form a client-server architecture, that is to say that the system S offers, through the application programming interface API, the possibility for several software clients C to obtain data or to perform operations by making a call through the API interface. In the example shown here, the operation performed through the API interface is the call of the method M. The same API interface can be used to call other elements of the system S. And in addition, the system S can include other interfaces giving access to other software and hardware elements. In this way, the client C is not a monolithic program but uses data and functions rendered by the system S.
De nombreuses architectures sont possibles. Par exemple, le client logiciel C peut être une application mobile s’exécutant sur un ordiphone et qui va appeler des éléments du système S à travers l’interface API et éventuellement d’autres interfaces pour obtenir certaines données ou faire réaliser certaines opérations. Le système S sera alors un logiciel qui peut s’exécuter sur un ou plusieurs serveurs matériels ou bien dans une architecture en nuage. Le client C peut être aussi une application hébergée dans un ordinateur personnel, ou bien une application Web qui s’exécute de manière virtuelle dans un navigateur Web. Ces architectures peuvent également utiliser, à la fois pour l’exécution du client C ou du système S, des techniques de machine virtuelle ou de conteneurisation des composants logiciels. Many architectures are possible. For example, the software client C can be a mobile application running on a smartphone and which will call elements of the system S through the API interface and possibly other interfaces to obtain certain data or perform certain operations. The system S will then be a software that can run on one or more hardware servers or in a cloud architecture. The client C can also be an application hosted on a personal computer, or a web application that runs virtually in a web browser. These architectures can also use, for both the execution of the client C or the system S, virtual machine techniques or containerization of software components.
L’interface de programmation applicative API peut être implémentée selon plusieurs techniques informatiques possibles. Par exemple, le système logiciel S peut être intégré dans un serveur Web et l’interface API sera alors une URL offerte par le serveur Web. D’autres techniques sont possibles telles que SOAP ou CORBA. The application programming interface (API) can be implemented using several possible computing techniques. For example, the software system S can be integrated into a web server and the API interface will then be a URL offered by the web server. Other techniques are possible such as SOAP or CORBA.
L’entité de gestion 100 présente également l’architecture matérielle d’un ordinateur conventionnel. Ce matériel comporte notamment un processeur, une mémoire vive de type RAM et une mémoire morte telle qu’une mémoire de type Flash, ROM, (non représentés sur la figure) et peut comporter des dispositifs d’entrée-sortie tels que claviers et/ou écrans (non représentés sur la figure). Dans tous les cas, le matériel sur lequel s’exécute l’entité de gestion 100 comporte des moyens de communication qui lui permettent d’accéder à un ou plusieurs réseaux de communication et en particulier d’être en communication à la fois avec le client logiciel C et le système S.The management entity 100 also has the hardware architecture of a conventional computer. This hardware includes in particular a processor, a RAM type memory and a read-only memory such as a Flash, ROM type memory (not shown in the figure) and may include input-output devices such as keyboards and/or screens (not shown in the figure). In all cases, the hardware on which the management entity 100 runs includes communication means which allow it to access one or more communication networks and in particular to be in communication with both the software client C and the system S.
La nature de l’entité de gestion 100 peut, dans certains modes de réalisation, dépendre de la technique utilisée pour interfacer l’élément M du système S. Dans le cas où le système S est interfacé par une interface Web, par exemple, l’entité de gestion 100 pourra être un élément du serveur Web qui donne accès à l’interface API. D’autres modes de réalisation sont possibles suivant la technique d’interfaçage retenue. The nature of the management entity 100 may, in certain embodiments, depend on the technique used to interface the element M of the system S. In the case where the system S is interfaced by a Web interface, for example, the management entity 100 may be an element of the Web server which provides access to the API interface. Other embodiments are possible depending on the interfacing technique chosen.
Dans tous les cas, l’entité de gestion 100 est distincte du système S. Le système S est en général un système hérité, qui ne peut pas être modifié, même si l’invention peut également s’appliquer à l’interfaçage de nouveaux systèmes S. In any case, the management entity 100 is distinct from the system S. The system S is generally a legacy system, which cannot be modified, even if the invention can also be applied to the interfacing of new systems S.
Un exemple de mode de réalisation possible de l’invention est alors le suivant. An example of a possible embodiment of the invention is then the following.
Le client logiciel C adresse à l’interface API du système S une demande d’exécution d’une méthode M et passe en paramètre de cette demande des valeurs V. Cette demande ou appel de l’interface API est d’abord traitée par l’entité de gestion 100 avant toute exécution d’élément appartenant au système S. Par exemple, le système S est un service Web et peut être accédé en lui adressant des requêtes HTTP. Ces requêtes sont alors gérées par un serveur Web et l’entité de gestion 100 peut être une partie du système de contrôle d’accès du serveur Web. The software client C sends a request to the API interface of the system S to execute a method M and passes values V as parameters of this request. This request or call to the API interface is first processed by the management entity 100 before any execution of an element belonging to the system S. For example, the system S is a web service and can be accessed by sending HTTP requests to it. These requests are then managed by a web server and the management entity 100 can be part of the web server's access control system.
Le module 101 de l’entité de gestion 100 va d’abord vérifier CHK l’identité ID du client logiciel C. Par exemple, dans une architecture de service Web, l’identité ID du client C est transmise dans un en-tête (traduction de l’anglais header) de la requête HTTP. En plus de l’identité ID, le client C va transmettre un mot de passe ou un certificat cryptographique. Cette donnée de sécurité est utilisée par le module 101 pour vérifier que l’identité ID présentée par le client C est bien la bonne. D’autres techniques de vérification d’identité sont possibles autres que celles utilisées par les serveurs Web. Si la vérification CHK de l’identité ID du client logiciel C échoue, le procédé selon l’invention ne se poursuit pas et un code d’erreur peut être remonté au client logiciel C ou bien une alerte de sécurité ou toute autre mesure appropriée. The module 101 of the management entity 100 will first check CHK the identity ID of the software client C. For example, in a web service architecture, the identity ID of the client C is transmitted in a header of the HTTP request. In addition to the identity ID, the client C will transmit a password or a cryptographic certificate. This security data is used by the module 101 to verify that the identity ID presented by the client C is indeed the correct one. Other identity verification techniques are possible other than those used by web servers. If the CHK verification of the identity ID of the software client C fails, the method according to the invention does not continue and an error code can be sent to the software client C or a security alert or any other appropriate measure.
Dans d’autres exemples de réalisations, l’entité de gestion 100 ne comprend pas un modèle de vérification 101 de l’identité ID du client logiciel C. Cette identité est considérée comme fournie à l’entité de gestion 100. In other exemplary embodiments, the management entity 100 does not include a verification model 101 of the identity ID of the software client C. This identity is considered to be provided to the management entity 100.
Le module 102 de l’entité de gestion 100 va ensuite procéder à l’extraction XTR des valeurs V des arguments passés en appel de la méthode M. Dans le cas d’un service Web, par exemple, la requête appelée par le client C pourra comprendre un objet informatique du langage JavaScript enregistré selon la notation JSON. Un outil tel que JSONpath permettra de retrouver les valeurs V passées en argument dans cet objet selon la notation JSON. Toujours dans une architecture de service Web, les valeurs V peuvent être définies dans les paramètres URL de la requête HTTP réalisée par le client C. Si l’interface API utilise d’autres techniques qu’une architecture Web, d’autres méthodes seront utilisées pour extraire XTR les valeurs V en accord avec la technologie d’interfaçage employée. The module 102 of the management entity 100 will then proceed to extract XTR values V from the arguments passed in the call of the method M. In the case of a Web service, for example, the request called by the client C may include a computer object of the JavaScript language recorded according to the JSON notation. A tool such as JSONpath will make it possible to find the values V passed as arguments in this object according to the JSON notation. Still in a Web service architecture, the values V can be defined in the URL parameters of the HTTP request made by the client C. If the API interface uses techniques other than a Web architecture, other methods will be used to extract XTR values V in accordance with the interfacing technology used.
On peut noter que dans le cas d’un serveur Web classique, le système de contrôle d’accès ne réalise pas l’extraction XTR des valeurs V. En effet, un serveur Web va simplement vérifier qu’un client C dont l’identité ID est vérifiée CHK peut ou non appeler une interface API en accédant à l’URL correspondante. Si l’appel est autorisé pour le client C dont l’identité ID est vérifiée CHK, les valeurs V sont transmises au système S sans aucun contrôle supplémentaire. It can be noted that in the case of a classic Web server, the access control system does not perform the XTR extraction of the V values. Indeed, a Web server will simply check whether a client C whose identity ID is verified CHK can or cannot call an API interface by accessing the corresponding URL. If the call is authorized for the client C whose identity ID is verified CHK, the V values are transmitted to the system S without any additional control.
L’opération d’extraction XTR est présentée ici comme ayant lieu après l’opération de vérification CHK de l’identité ID du client logiciel C, mais dans d’autres modes de réalisation, cette opération prend place avant ou bien les deux opérations sont réalisées en parallèle. L’ordre d’exécution de ces deux opérations de vérification CHK et d’extraction XTR n’a pas d’importance dans la réalisation du procédé selon l’invention. The XTR extraction operation is presented here as taking place after the CHK verification operation of the identity ID of the software client C, but in other embodiments, this operation takes place before or the two operations are carried out in parallel. The order of execution of these two CHK verification and XTR extraction operations is not important in carrying out the method according to the invention.
Le module 103 de l’entité de gestion reçoit l’identité ID vérifiée CHK du client logiciel C et les valeurs V des paramètres passés en argument de l’appel à la méthode M. Dans l’exemple de réalisation représenté par la
En l’occurrence, dans l’exemple représenté dans la
Une caractéristique essentielle du procédé selon l’invention, présente dans tous les modes de réalisation, est que les opérations de vérification CHK de l’identité ID (qui peut être réalisée en dehors de l’entité de gestion 100 et ne fait pas partie en général du procédé selon l’invention), d’extraction XTR des valeurs V et enfin d’autorisation AUT de l’appel sont exécutées avant l’accès à l’interface de l’appel en question, donc avant la moindre exécution d’un élément du système S en lien avec l’appel. Autrement dit, toutes les opérations du procédé selon l’invention prennent place en dehors du système S, ce qui permet de les réaliser dans le cadre d’un système S hérité qui ne peut en aucun cas être modifié. L’avantage principal de l’invention réside dans cette possibilité d’application à une interface API d’un système S hérité qui ne peut être modifié. An essential characteristic of the method according to the invention, present in all embodiments, is that the operations of CHK verification of the identity ID (which can be carried out outside the management entity 100 and is not generally part of the method according to the invention), of XTR extraction of the values V and finally of AUT authorization of the call are executed before access to the interface of the call in question, therefore before the slightest execution of an element of the system S linked to the call. In other words, all the operations of the method according to the invention take place outside the system S, which allows them to be carried out within the framework of a legacy system S which cannot be modified under any circumstances. The main advantage of the invention lies in this possibility of application to an API interface of a legacy system S which cannot be modified.
Une fois l’appel autorisé AUT, celui-ci est transmis à l’interface API. L’appel accède alors à l’interface API. Cette interface API va alors transmettre l’appel à l’élément du système S qui va effectuer la méthode M, avec en argument la ou les valeurs V. L’exécution de la méthode M interfacée par l’interface de programmation applicative API va produire la valeur V’. D’autres valeurs peuvent être produites selon la nature de la méthode M appelée. Des actions ne produisant pas de valeurs en retour peuvent également être effectuées par le système S. Cette valeur V’ est obtenue par le client logiciel C comme résultat de l’appel par le client C de la méthode M à travers l’interface API. Dans certains modes de réalisation de l’invention, non représentés dans la
La
Dans l’exemple illustré par la
Dans l’exemple de la
Il peut être pertinent pour l’opérateur de télécommunications qui gère le système S d’ouvrir à des partenaires tiers la possibilité d’accéder aux services Web du système S. Par exemple, une banque peut souhaiter connaître le statut d’itinérance de ses clients afin d’améliorer la lutte anti-fraude. Le client logiciel C peut être alors un élément du système d’information d’une banque qui, en présence d’activités suspectes à l’étranger du compte d’un de ses clients, pourra vérifier grâce au statut d’itinérance s’il est effectivement présent à l’étranger ou pas. Cependant, il faut s’assurer que le client logiciel C ne pourra pas accéder à des informations relatives à d’autres clients de l’opérateur de télécommunications que ceux qui ont donné leur autorisation pour que cette information soit accessible. It may be relevant for the telecommunications operator that manages system S to open up the possibility of accessing the web services of system S to third-party partners. For example, a bank may wish to know the roaming status of its customers in order to improve its fight against fraud. Software client C may then be an element of a bank's information system which, in the presence of suspicious activity abroad in the account of one of its customers, will be able to check, using the roaming status, whether the customer is actually present abroad or not. However, it must be ensured that software client C will not be able to access information relating to customers of the telecommunications operator other than those who have given their authorization for this information to be accessible.
Or, le système S ne peut en général pas être modifié. Une gestion fine des droits d’accès ne peut pas lui être ajouté. Le contrôle d’accès réalisé par le serveur Web pour donner accès à l’interface API du système S n’est pas non plus adapté. L’invention prend tout son intérêt dans cette situation. However, the S system cannot generally be modified. Fine-grained access rights management cannot be added to it. The access control implemented by the web server to provide access to the S system API interface is also not suitable. The invention is particularly useful in this situation.
Le client logiciel C, par exemple un élément du système d’information d’une banque, souhaite interroger l’interface de programmation applicative API du système S pour connaître le statut d’itinérance d’un téléphone mobile. Cette information est accessible en adressant à l’interface API la requête HTTP GET status(num1). The software client C, for example a component of a bank's information system, wants to query the application programming interface (API) of the system S to find out the roaming status of a mobile phone. This information can be accessed by sending the HTTP request GET status(num1) to the API interface.
L’entité de gestion 100 est par exemple, dans ce mode de réalisation, un composant du serveur Web qui donne accès à l’interface API sous forme de requêtes HTTP. L’entité de gestion 100 va vérifier CHK l’identité ID du client logiciel C et extraire XTR les valeurs V de l’appel à l’interface API. Il s’agit ici en l’occurrence du numéro de téléphone num1. Dans d’autres modes de réalisation, cette vérification est réalisée par une autre entité qui fournit et confirme ensuite l’identité ID du client logiciel C à l’entité de gestion 100. The management entity 100 is, for example, in this embodiment, a component of the web server that provides access to the API interface in the form of HTTP requests. The management entity 100 will check CHK the identity ID of the software client C and extract XTR the values V from the call to the API interface. This is the telephone number num1. In other embodiments, this verification is carried out by another entity that then provides and confirms the identity ID of the software client C to the management entity 100.
La
Le module 103 de l’entité de gestion 100 va donc autoriser AUT l’accès à l’interface API de l’appel par le client C dont l’identité est ID de la requête donnant le statut d’itinérance pour le numéro de téléphone num1. Cet appel se poursuit donc vers l’interface de programmation applicative API qui interface le système S. Celui-ci est disposé à répondre et va donc répondre au client logiciel C. Comme la technologie d’interrogation de l’interface API est un service Web, le système S répond tout d’abord par un message d’information 200 OK qui est un message standard du protocole HTTP. The module 103 of the management entity 100 will therefore authorize AUT access to the API interface of the call by the client C whose identity is ID of the request giving the roaming status for the telephone number num1. This call therefore continues towards the application programming interface API which interfaces the system S. The latter is ready to respond and will therefore respond to the software client C. As the query technology of the API interface is a Web service, the system S first responds with a 200 OK information message which is a standard message of the HTTP protocol.
Le système S, qui est un système hérité, sans modification, répond et donne le statut d’itinérance à travers l’interface API, ce qu’il fait à chaque fois qu’il est requêté et qu’il est disponible. L’information est transférée au client logiciel C. System S, which is a legacy system, without modification, responds and gives the roaming status through the API interface, which it does every time it is requested and is available. The information is transferred to the software client C.
Ultérieurement, le client logiciel C souhaite requêter le statut d’itinérance pour le numéro de téléphone num2. Later, the software client C wants to query the roaming status for the phone number num2.
Dans ce cas, l’interrogation de la base de règles DB par le module 103 montre que le client logiciel C dont l’identité ID a été vérifiée CHK n’est pas autorisé NOK à obtenir le statut d’itinérance du numéro de téléphone num2. L’information peut être explicitement donnée dans une règle de la base DB, comme indiqué dans la
L’appel du client C n’est donc pas autorisé AUT et l’entité de gestion 100 répond par un message d’information 403 Forbidden qui est un message standard du protocole HTTP au client logiciel C. D’autres messages standards peuvent être utilisés de préférence, par exemple le message 404 Not Found afin de ne pas fournir d’information à un éventuel attaquant. Dans cet exemple de réalisation, l’appel n’est pas autorisé AUT à accéder à l’interface API par l’entité de gestion 100 après interrogation de la base de règles DB, et par conséquent, une erreur est renvoyée au client logiciel. The call from client C is therefore not authorized AUT and the management entity 100 responds with a 403 Forbidden information message which is a standard message of the HTTP protocol to the software client C. Other standard messages can be used preferably, for example the 404 Not Found message in order not to provide information to a possible attacker. In this exemplary embodiment, the call is not authorized AUT to access the API interface by the management entity 100 after querying the rule base DB, and consequently, an error is returned to the software client.
Ici, l’appel n’est pas transmis à l’interface API du système S. Comme ce système hérité n’a pas pu être modifié, si l’appel avait été transmis, le système S aurait procédé à l’exécution de l’appel et aurait fourni une réponse. Le client C, élément du système d’information d’une banque, en l’absence de l’invention, pourrait accéder aux statuts d’itinérance de n’importe quel téléphone mobile, ce qui serait une faille de sécurité importante pour le système d’information de l’opérateur de télécommunications. L’invention permet donc d’ouvrir les interfaces API des systèmes S hérités à des tiers, sans avoir à les modifier, et en préservant leur sécurité. Here, the call is not forwarded to the API interface of system S. Since this legacy system could not be modified, if the call had been forwarded, system S would have executed the call and provided a response. Customer C, an element of a bank's information system, in the absence of the invention, could access the roaming status of any mobile phone, which would be a significant security vulnerability for the telecommunications operator's information system. The invention therefore makes it possible to open the API interfaces of legacy systems S to third parties, without having to modify them, and while preserving their security.
L’exemple de la
La
Dans cet exemple, comme dans celui de la
Dans l’exemple de la
Dans notre exemple, l’objectif est de permettre à un client de l’opérateur de réaliser par lui-même certaines opérations de gestion. Pour cela, un client logiciel C peut appeler l’interface API du système S en adressant une requête HTTP POST mgmt(num) pour indiquer sa volonté de réaliser dans le futur certains actes de gestion (traduction de l’anglais management, abrégé en mgmt) pour le numéro de téléphone num. In our example, the objective is to allow a client of the operator to carry out certain management operations by itself. To do this, a software client C can call the API interface of the system S by sending an HTTP POST request mgmt(num) to indicate its desire to carry out certain management actions (translation of the English management , abbreviated to mgmt) for the telephone number num in the future.
L’entité de gestion 100 va réaliser un contrôle d’accès tel que décrit dans l’exemple de la
En retour, le système S transmet au client C le message d’information 200 OK qui est un message standard du protocole HTTP puis fournit au client C une valeur V’, à savoir dans cet exemple un identifiant de gestion hdlr1 (abrégé de l’anglais handler) qui permettra ultérieurement au client logiciel C de réaliser des opérations de gestion en adressant d’autres requêtes à l’interface API du système S. In return, the system S transmits to the client C the information message 200 OK which is a standard message of the HTTP protocol then provides the client C with a value V', namely in this example a management identifier hdlr1 (abbreviated from the English handler ) which will subsequently allow the software client C to carry out management operations by addressing other requests to the API interface of the system S.
Dans un mode de réalisation de l’invention, l’entité de gestion 100 récupère cette valeur V’ en retour et l’utilise pour créer une nouvelle règle. Cette opération est représentée dans la
Dans la suite, comme montré sur la
Dans certains modes de réalisation, la règle R ajoutée ADD est associée à une durée de validité. La règle R ajoutée ADD ne sera donc active que pendant une durée limitée. La durée de validité peut être transmise dans les arguments obtenus en retour de l’appel et de l’exécution de l’élément M. Dans d’autres modes de réalisation, la durée de validité est définie a priori par l’entité de gestion 100. Les deux modes de réalisation peuvent être combinés. Certains types de règles R ajoutées ADD peuvent avoir une durée de validité fournie en retour par l’élément M alors que d’autres auront une durée prédéfinie. La durée prédéfinie peut aussi être une durée de validité par défaut qui sera appliquée si une durée n’est pas présente dans les valeurs fournies en retour de l’appel de l’élément M. In some embodiments, the added R rule ADD is associated with a validity period. The added R rule ADD will therefore only be active for a limited duration. The validity period can be transmitted in the arguments obtained in return from the call and execution of the element M. In other embodiments, the validity period is defined a priori by the management entity 100. The two embodiments can be combined. Some types of added R rules ADD can have a validity period provided in return by the element M while others will have a predefined duration. The predefined duration can also be a default validity period which will be applied if a duration is not present in the values provided in return from the call of the element M.
Grâce à l’invention, sans modifier le système S hérité, qui ne peut pas intégrer un système de contrôle d’accès ajouté, il est donc possible de mettre en place des opérations de gestion effectuées par des clients logiciels situés en dehors du système d’information dans lequel se trouve le système S. L’utilisation d’identifiants de gestion permet d’éviter des attaques où les numéros de téléphone sont devinés par des attaquants sachant comment requêter le système S. Thanks to the invention, without modifying the legacy system S, which cannot integrate an added access control system, it is therefore possible to set up management operations carried out by software clients located outside the information system in which the system S is located. The use of management identifiers makes it possible to avoid attacks where telephone numbers are guessed by attackers knowing how to query the system S.
Signalons enfin ici que, dans le présent texte, le terme « module » peut correspondre aussi bien à un composant logiciel qu’à un composant matériel ou un ensemble de composants matériels et logiciels, un composant logiciel correspondant lui-même à un ou plusieurs programmes ou sous-programmes d’ordinateur ou de manière plus générale à tout élément d’un programme apte à mettre en œuvre une fonction ou un ensemble de fonctions telles que décrites pour les modules concernés. De la même manière, un composant matériel correspond à tout élément d’un ensemble matériel (ou hardware) apte à mettre en œuvre une fonction ou un ensemble de fonctions pour le module concerné (circuit intégré, carte à puce, carte à mémoire, etc.).Finally, it should be noted here that, in this text, the term “module” can correspond to a software component as well as to a hardware component or a set of hardware and software components, a software component itself corresponding to one or more computer programs or sub-programs or, more generally, to any element of a program capable of implementing a function or a set of functions as described for the modules concerned. In the same way, a hardware component corresponds to any element of a hardware assembly capable of implementing a function or a set of functions for the module concerned (integrated circuit, smart card, memory card, etc.).
Claims (7)
- Extraction (XTR) d’une valeur (V) des arguments passés en paramètre par le client logiciel (C) dans l’appel de l’interface de programmation applicative (API) ;
- Autorisation (AUT) pour l’appel donné d’accéder à l’interface (API) en fonction de l’identité (ID) du client logiciel (C) et de la valeur extraite (V) ;
- Si l’appel donné est autorisé (AUT) à accéder à l’interface (API), la création (ADD) d’une règle (R) comprenant une valeur obtenue (V’) à la suite de l’exécution de l’élément (M) appelé, ladite règle créée (R) étant relative à une étape d’autorisation ultérieure d’un autre appel.
- Extraction (XTR) of a value (V) from the arguments passed as a parameter by the software client (C) in the call to the application programming interface (API);
- Authorization (AUT) for the given call to access the interface (API) based on the identity (ID) of the software client (C) and the extracted value (V);
- If the given call is authorized (AUT) to access the interface (API), the creation (ADD) of a rule (R) comprising a value obtained (V') following the execution of the called element (M), said created rule (R) being relative to a subsequent authorization step of another call.
- Un module (102) d’extraction (XTR) d’une valeur (V) des arguments passés en paramètre par le client logiciel (C) dans l’appel de l’interface de programmation applicative (API) ;
- Un module (103) d’autorisation (AUT) pour l’appel donné d’accéder à l’interface (API) en fonction de l’identité (ID) du client logiciel (C) et de la valeur extraite (V), ledit module d’autorisation étant, si l’appel donné est autorisé à accéder à l’interface (API), apte à créer une règle (R) comprenant une valeur obtenue (V’) à la suite de l’exécution de l’élément (M) appelé, ladite règle créée (R) étant relative à une étape d’autorisation ultérieure d’un autre appel ;
- A module (102) for extracting (XTR) a value (V) from the arguments passed as a parameter by the software client (C) in the call to the application programming interface (API);
- An authorization module (103) (AUT) for the given call to access the interface (API) as a function of the identity (ID) of the software client (C) and the extracted value (V), said authorization module being, if the given call is authorized to access the interface (API), capable of creating a rule (R) comprising a value obtained (V') following the execution of the called element (M), said created rule (R) being relative to a subsequent authorization step of another call;
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FRFR2401004 | 2024-02-01 | ||
| FR2401004A FR3159029A1 (en) | 2024-02-01 | 2024-02-01 | Method for managing the call by a client of an application programming interface |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025162892A1 true WO2025162892A1 (en) | 2025-08-07 |
Family
ID=90720926
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/EP2025/052035 Pending WO2025162892A1 (en) | 2024-02-01 | 2025-01-28 | Method for managing the calling of an application programming interface by a client |
Country Status (2)
| Country | Link |
|---|---|
| FR (1) | FR3159029A1 (en) |
| WO (1) | WO2025162892A1 (en) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9729506B2 (en) * | 2014-08-22 | 2017-08-08 | Shape Security, Inc. | Application programming interface wall |
| US20190334910A1 (en) * | 2016-12-15 | 2019-10-31 | Nutanix, Inc. | Accessing computing resource attributes of an external service provider |
| US11245728B1 (en) * | 2018-10-16 | 2022-02-08 | Styra, Inc. | Filtering policies for authorizing an API |
-
2024
- 2024-02-01 FR FR2401004A patent/FR3159029A1/en active Pending
-
2025
- 2025-01-28 WO PCT/EP2025/052035 patent/WO2025162892A1/en active Pending
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9729506B2 (en) * | 2014-08-22 | 2017-08-08 | Shape Security, Inc. | Application programming interface wall |
| US20190334910A1 (en) * | 2016-12-15 | 2019-10-31 | Nutanix, Inc. | Accessing computing resource attributes of an external service provider |
| US11245728B1 (en) * | 2018-10-16 | 2022-02-08 | Styra, Inc. | Filtering policies for authorizing an API |
Also Published As
| Publication number | Publication date |
|---|---|
| FR3159029A1 (en) | 2025-08-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3008872B1 (en) | Method for authenticating a terminal by a gateway of an internal network protected by an entity providing secure access | |
| EP2795878B1 (en) | Method for sharing multimedia contents between users. | |
| US20080301231A1 (en) | Method and System for Maintaining and Distributing Wireless Applications | |
| EP1688818A1 (en) | Process for the secure management of the execution of an application | |
| WO2005046278A2 (en) | Method for managing the security of applications with a security module | |
| EP2795870B1 (en) | Method enabling a telecommunications terminal to access a database hosted by a service platform that can be accessed via a telecommunications network | |
| FR2964812A1 (en) | AUTHENTICATION METHOD FOR ACCESSING A WEB SITE | |
| FR3013541A1 (en) | METHOD AND DEVICE FOR CONNECTING TO A REMOTE SERVICE | |
| EP3829205A1 (en) | Methods and applications for controlling distributed access to a telecommunications network | |
| WO2025162892A1 (en) | Method for managing the calling of an application programming interface by a client | |
| EP2813962B1 (en) | Method for controlling access to a specific service type and authentication device for controlling access to such a service type. | |
| EP4078922B1 (en) | Method for obtaining a command relating to a network access profile of an euicc security module | |
| EP2912598B1 (en) | Method for downloading at least one software component onto a computing device, and associated computer program product, computing device and computer system | |
| WO2021116555A1 (en) | Method for processing domain name resolution requests | |
| FR2940695A1 (en) | MICRONOYAU GATEWAY SERVER | |
| EP3948596B1 (en) | Method for running secure code, corresponding devices, system and programs | |
| EP2284751B1 (en) | Method for traceability and accountability of dynamic exchange in an internet environment | |
| EP1510904B1 (en) | Method and system for evaluating the level of security of an electronic equipment and for providing conditional access to resources | |
| WO2020148492A1 (en) | Authorization for the loading of an application onto a security element | |
| FR3076638A1 (en) | METHOD FOR MANAGING ACCESS TO AN AUTHENTICATION WEB PAGE | |
| FR2943482A1 (en) | Method for securization of data communication request between mobile telephone of user client and Internet network, involves requesting application access date and application downloading date by operator | |
| FR2888437A1 (en) | Service e.g. marine meteorological consultation service, access controlling method for e.g. mobile telephone, involves downloading marked validation tokens in multimedia terminal before user chooses service to be utilized | |
| EP3643035A1 (en) | Method of control of the obtaining by a terminal of a configuration file | |
| WO2006136749A2 (en) | Security method and device for managing access to multimedia contents | |
| FR2911022A1 (en) | Resource e.g. value added service, accessing application transmitting method for mobile telephone terminal, involves transmitting application sent from secured access unit accessing resource, and generated certificate to terminal |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 25702488 Country of ref document: EP Kind code of ref document: A1 |