1. Field of Invention
This invention relates generally to security in computer networks.
2. Prior Art
An Identity Metasystem is a collection of interoperable computing elements on a computer network which enables users of the services provided by the network to manage and exchange their digital identities. In an Identity Metasystem, an Identity Provider is a network server responsible for authenticating users, and a Relying Party is a network server which requires an authenticated user identity in order to provide service to that user. A prior art definition of the Identity Metasystem specifies the mechanisms that enable a Relying Party to validate that a user requesting service from that Relying Party has been previously authenticated by an Identity Provider, in which the Relying Party is a web service based on the Simple Object Access Protocol (SOAP), or web server based on the Hypertext Transfer Protocol (HTTP). HTTP is specified by the document IETF RFC 2616 “Hypertext Transfer Protocol—HTTP/1.1” by R. Fielding et al of June 1999. The Hypertext Transfer Protocol is typically used by a web browser to communicate with a web server to retrieve Hypertext Markup Language documents from a web application.
The document “A Technical Reference for the Information Card Profile V1.0”, published in December 2006 by Microsoft Corporation, describes the network communication protocols by which an Identity Selector may obtain the token requirements of a Replying Party, then authenticate to an Identity Provider, and finally send a token obtained from an Identity Provider to a Relying Party. The protocols defined in “A Technical Reference for InfoCard v1.0 in Windows” specify a protocol exchange in which the protocols defined in the documents Web Services Security: SOAP Message Security 1.0 (WS-Security 2004), Web Services Trust Language (WS-Trust), Web Services Security Policy Language (WS-SecurityPolicy) and Web Services Metadata Exchange (WS-MetadataExchange), all of which are based on the Simple Object Access Protocol (SOAP), are to be used for the communication between the Identity Selector and the Relying Party. The Simple Object Access Protocol is typically used only between applications in a web services framework.
The document “A Guide to Supporting InfoCard v1.0 Within Web Applications and Browsers”, published in March 2006 by Microsoft Corporation, describes the network communication protocols by which an Identity Selector may obtain the token requirements of a Relying Party and send a token obtained from an Identity Provider to a Relying Party using the Hypertext Transfer Protocol (HTTP) and Hypertext Markup Language (HTML).
The diagram of
A limitation of the prior art is that a user may inadvertently provide an authenticated identity to a relying party which is not in accordance with the user's desired interactions with that relying party. Another limitation of the prior art is that an identity selector might inadvertently reveal a user's identity to a fraudulent relying party.
This invention describes a system and method for validating interactions in an identity metasystem to address the above-mentioned limitations. In this invention, a validation service (20) participates in the identity transfer interaction and provides an error indication to the user (36) should the interaction be likely to result in inappropriate disclosure or use of the user's identity.
This system comprises the following major components:
The identity provider (11) is a network service which performs authentications of users. This service comprises a credentials database component (10) and an application component (18).
The identity provider credentials database component (10) can be implemented as a relational database. There is one table in this database, the idp user table (380).
The idp user table (380) in the identity provider credentials database has one row for each user whose identity account is managed by the identity provider. The primary key of this table is the USER UNIQUE ID column. The columns of this table are:
The identity provider application component (18) is a network service that authenticates users. The behavior of this component is illustrated by the flowchart of
The relying party (17) is a network service which relies upon an identity provider (11) to authenticate users. This service comprises a provider database (16) and an application component (26).
The relying party provider database component (16) can be implemented as a relational database. The tables of this database store an index of the users of the relying party service, in which the user identifier comprises an identifier for the identity provider and an identifier for the user that is generated by an identity provider.
The relying party application component (26) is a network service that is contacted by the client web browser (34). The relying party application component is typically implemented as software running on a web server or as a web service provided by software running on an application server.
The certification authority (12) issues X.509 public key certificates to the identity provider application component (18), the validation responder component (24) and the relying party application component (26). It is necessary for the identity provider application component (18), the validation responder component (24) and the relying party application component (26) to have X.509 certificates for use as Transport Layer Security (TLS) server certificates. The identity selector needs to have a copy of the certification authority's certificate as a trusted certificate to be able to perform a validation of the identity provider application component's certificate. Prior to the validation process, the identity provider application component, the validation responder component and the relying party application component will each have generated a public and private key pair, and the certification authority will have generated X.509 public key certificates which sign the identity and public key of each of these servers using the private key of the certification authority.
The validation service (20) is a network service that provides data to the identity selector (32) which assists the identity selector during the authentication process. This service comprises the following components: a validator database component (22) and a validator responder component (24).
The validation service validator database component (22) can be implemented as a relational database. There are four tables in this database: the idp table (330), the rp table (332), the trust table (334) and the validator user table (336).
The idp table (330) has one row for each identity provider known to the validation service. The primary key of this table is the IDP UNIQUE ID column. The columns of this table are:
The rp table (332) has one row for each relying party known to the validation service. The primary key of this table is the RP UNIQUE ID column. The columns of this table are:
The trust table (334) has one row for each relationship between an identity provider and a relying party known to the validation service. The primary key of this table is the combination of the IDP UNIQUE ID column and the RP UNIQUE ID column. The columns of this table are:
The validator user table (336) has one row for each user account known to the validation service. The primary key of this table is the combination of the IDP UNIQUE ID column and the USER INDEX column. The columns of this table are:
The validation service validator responder component (24) is a network service. This component is typically implemented as software running on a web server or as a web service provided by software running on an application server. The behavior of this component is illustrated by the flowchart of
The client (28) is typically a single computer system, such as a laptop or other mobile device. The client comprises the following three components: a card database component (30), an identity selector component (32), and a web browser component (34).
The card database component (30) can be implemented as a relational database. There are two tables in this database: the information card table (220) and the validator table (222).
The information card table (220) has one row for each information card stored in the card database. The primary key of this table is the CARD UNIQUE ID column. The columns of this table are:
The validator table (222) has one row for each validation service known to the client. The primary key of this table is the VALIDATOR ID column. The columns of this table are:
The identity selector component (32) is a component of the operating system of the client (28). The identity selector implements the client role of the InfoCard protocols, and authenticates the user to the user's identity provider. The behavior of this component is illustrated by the flowchart of
The web browser component (34) is a system software component of the client (28). The web browser notifies the identity selector when a user has selected to authenticate to an InfoCard-capable relying party application (26), and forwards a token returned by the identity selector to that relying party application.
The diagram of
The diagram of
The diagram of
The diagram of
The diagram of
The behavior of an identity selector (32) in this invention is illustrated by the flowchart of
At step 82, the thread will load the set of cards from the card database (30) into memory. At step 84, the thread will select from this set the cards that meet the requirements of the relying party application component (26), and will display these cards to the user (36). At step 86, the thread will wait for the user to make a selection, in which the user has the options to select a card, to create a new self-issued card, or to cancel. If the user selected to cancel, then the thread will end. Otherwise, if the user selected to create a new self-issued card, then the thread will continue processing at step 92. Otherwise, if the card selected by the user does not have validation parameters, then the thread will continue processing at step 190. Otherwise, the user has selected a card that has validation parameters, and the thread will continue at step 120.
At step 92, the thread will wait for the user to supply the claim parameters of the new self-issued card. If the user did not supply the parameters and canceled the interaction, then the thread will end. Otherwise, at step 96 the thread will add the new self-issued card as a row in the information card table (220). The thread will then loop back to continue processing at step 84.
At step 120, the thread will establish a HTTPS connection to the validator responder component (24), at the network address specified in the ADDRESS column of the row of the validation service in the validator table (222). If there is a value in the AUTH INFO column of that row, then the thread will use this information to perform a HTTP authentication to the validator responder. If the connection could not be established, then at step 140 the thread will warn the user, and continue processing at step 210. Otherwise, at step 124 the thread will send the parameters of the card and the relying party parameter to the validator over this connection, and wait for a response. If a response from the validator was not available, then at step 142 the thread will close the connection to the validator, warn the user, and then the thread will continue processing at step 210. If the response from the validator had error indications, then the thread will continue processing at step 132. If the card was self-issued, then at step 144 the thread will close the connection to the validator, build a token for the relying party, and continue processing at step 212. Otherwise, if the card was not self-issued, then the thread will continue processing at step 160.
At step 132, the thread will close the connection to the validator, warn the user by displaying the returned error indications, and wait for the user's response. If the user chooses to not proceed, then the thread will end. Otherwise, the thread will continue processing at step 210.
At step 160, the thread will authenticate to the identity provider, and wait for a response comprising either an error indication or a set of one or more tokens from that identity provider. If the response from the identity provider was an error, then at step 163 the thread will close the connection to the validator, and then the thread will loop back to continue processing at step 84. If the response from the identity provider did not include any token for the validator, then at step 165 the thread will close the connection to the validator, and the thread will continue processing at step 212. Otherwise, at step 166 the thread will send this token to the validator over the connection. At step 167, the thread will wait for a response from the validator, and close the connection to the validator. If there was a response from the validator and the response did not have an error indication, then the thread will continue processing at step 212. Otherwise, at step 170 the thread will warn the user by displaying any returned error indications, and wait for the user's response. If the user chooses to not proceed, then the thread will end. Otherwise, the thread will continue processing at step 212.
At step 190, the thread will prompt the user to add a validator, by displaying the set of validation services known to the client in the validator table (222). If the user selected to cancel the interaction, then the thread will end. Otherwise, if the user selected a validator, then the thread will continue processing at step 120. If the card was self-issued, then at step 198 the thread will build a token for the relying party, and then the thread will continue processing at step 212. Otherwise, the thread will continue processing at step 210.
At step 210, the thread will perform an authentication protocol exchange with the identity provider. If the authentication failed, then the thread will loop back to step 84. At step 212, the thread will return to the web browser a token for the relying party, and the thread will then end.
The behavior of a validator responder component (24) is illustrated by the flowchart of
At step 234, the thread will wait for an incoming request from the identity selector. If there is more than one thread of control present in the component, then an incoming request from an identity selector is provided to exactly one thread. At step 246, the thread will parse the request. If the request is not valid, then at step 240 the thread will respond error, and loop back to step 234. At step 242, the thread will set an empty pending response. If the request includes a relying party certificate path or an identity provider certificate path, then the thread will continue processing at step 250. Otherwise, the thread will continue processing at step 282.
At step 250, the thread will test whether the request includes an identity provider certificate path. If the request includes an identity provider certificate path, then at step 252 the thread will validate the set of certificates in the identity provider certificate path, and search the idp table (330) for a row in which the value of the CERT PATH column matches that certificate path and the value of the STATUS column is NULL. If the path is not valid or a row is not found, then at step 256 the thread will add an error indication to the pending response, and continue processing at step 282. Otherwise, the thread will update the value of the LAST USE DATE column in that row. At step 258, the thread will validate the set of certificates in the relying party certificate path, and search the rp table (332) for a row in which the value of the CERT PATH column matches that certificate path and the value of the STATUS column is NULL. If the path is not valid or a row was not found, then at step 262 the thread will add an error indication to the pending response, and continue processing at step 282. Otherwise, the thread will update the value of the LAST USE DATE column in that row, and at step 264 the thread will search the trust table (334) for a row in which the identity provider and relying party unique identifiers match that of the unique identifiers of the identity provider and relying party rows, and the value of the STATUS column is NULL. If a row was not found, then at step 268 the thread will add a warning to the pending response. Otherwise, if a row was found, then at step 270 the thread will update the value of the LAST USE DATE column in that row with the current date and time. The thread will then continue processing at step 282.
At step 282, the thread will test whether the request includes a token from the identity provider which is encrypted with the public key of the validation service. If the request includes such a token, then the thread will continue processing at step 284. If the pending response is empty, then at step 294 the thread will set the pending response to indicate “in progress” and continue processing at step 316. Otherwise, the thread will continue processing at step 316.
At step 284, the thread will decrypt the token from the identity provider using its private key. If the token was not valid or could not be decrypted, then at step 288, the thread will add an error indication to the pending response and continue processing at step 314. Otherwise, at step 302 the thread will search the validator user table (336) for a row in which the value IDP UNIQUE ID column matches that of the identity provider and the value of the USER INDEX column matches that of the user index obtained from the decrypted token. If a row for a user was not found, then the thread will continue processing at step 292. Otherwise, at step 306 the thread will compare the context obtained from the value of the CONTEXT column with that of the CONTEXT column in a row obtained from the rp table (332). If the combination of these contexts is not valid (the values do not match), then at step 310 the thread will add an error indication to the pending response and continue processing at step 316. If the context combination was valid, then at step 312 the thread will set the pending response to success and continue processing at step 316.
At step 316, the thread will send the pending response to the identity selector. The thread will then loop back to step 234.
The behavior of an identity provider application component (18) is illustrated by the flowchart of
At step 352, the thread will wait for a request from the identity selector. If there is more than one thread of control in this component, then each request is provided to exactly one thread. At step 354, the thread will authenticate the user by searching the idp user table (380) for a row in which the value of the USER NAME matches that of the request, and the value of the CREDENTIALS column matches the presented credentials from the request. If the authentication failed, then at step 358 the thread will return an error to the identity selector, and then the thread will loop back to step 352. Otherwise, at step 360 the thread will test whether the request includes a certificate path of a validation service. If the request includes a certificate path of a validation service, then at step 362 the thread will generate token for the validation service which comprises the user unique id of the authenticated user, and at step 364 the thread will encrypt the token for the validation service with the public key of the validation service obtained from the certificate path. At step 366, the thread will generate and encrypt a token for the relying party, as described in the document “A Technical Reference for the Information Card Profile V1.0”. At step 368, the thread will send a reply to the identity selector containing the generated and encrypted token or pair of tokens, and then the thread will loop back to step 352.
Many different embodiments of this invention may be constructed without departing from the scope of this invention. While this invention is described with reference to various implementations and exploitations, and in particular with respect to systems for authentication in computer networks, it will be understood that these embodiments are illustrative and that the scope of the invention is not limited to them.
Number | Date | Country | |
---|---|---|---|
60995984 | Sep 2007 | US |