In computer programming, a “claim” includes a declaration made by an entity (often referred to as an issuer). A declaration is a statement or assertion about an entity (often referred to as a subject). Examples of entities include name, identity, key, group, privilege, capability, and others. For instance, if the subject were a person, the assertion might be that the subject is of a particular age, has a particular country of citizenship, is authorized to act in a certain role (e.g., IT administrator), or any one of many other types of assertions.
Applications may be claims-based in that they may use claims to perform processing. In so doing, after deployment, the application will encounter any number of claims made by one or more issuers. For each claim, the application (or a subsystem acting on behalf of the application) determines whether or not the application trusts the issuer to be making the assertion of the type made in the claim. If the application determines that the issuer is to be trusted, at least within the context of the assertion being made, the application will typically act as though the statement about the subject is true. Otherwise, the application will typically treat the statement about the subject as being unverified. As an example, claims have been used by applications to control access to resources, and/or to personalize processing for a particular client machine or user. For instance, to personalize processing for a particular user, a claim may be made about the user, where the user is the subject of the claim.
The post-deployment operation of a claims-based application thus relies on the availability of claims providers to generate claims issued by reliable issuers.
Although not required, some embodiments described herein relate to the testing of a claims-based application at development time by providing the claims-based application with an environment in which it receives claims. Thus, the environment simulates an actual environment in which the claims-based application may operate after deployment into its actual working environment. This allows the claims-based application to be more thoroughly tested to verify proper operation in the environment in which it is receiving claims. Also, this may allow claims-based applications to be tested at a lower expense. The environment includes a development-time claims provider, which may be configured to provide assertions of a particular type about a subject.
This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
These and other objects and features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
To further clarify the above and other advantages and features of the present invention, a more particular description of the invention will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. It is appreciated that these drawings depict only illustrated embodiments of the invention and are therefore not to be considered limiting of its scope. The invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
Embodiments described herein relate to the development-time testing of claims based applications. After a claims-based application is deployed, as the application runs, the application will encounter a number of claims, and will perform appropriate processing that depends on the applications trust in those claims. However, at development time, access to claims providers might be either limited or non-existent. The principles described herein permits access to an environment at development-time in which the claims-based application will encounter any number and variety of claims. Accordingly, the application may be evaluated to verify proper operation in response to particular claims at development time, and any deviations in expected performance may be addressed prior to deployment.
First, some introductory discussion regarding a computing system in which the principles described herein may be employed will be described with respect to
As illustrated in
In the description that follows, embodiments are described with reference to acts that are performed by one or more computing systems. If such acts are implemented in software, one or more processors of the associated computing system that performs the act direct the operation of the computing system in response to having executed computer-executable instructions. An example of such an operation involves the manipulation of data. The computer-executable instructions (and the manipulated data) may be stored in the memory 104 of the computing system 100.
Computing system 100 may also contain communication channels 108 that allow the computing system 100 to communicate with other message processors over, for example, network 110. Communication channels 108 are examples of communications media. Communications media typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information-delivery media. By way of example, and not limitation, communications media include wired media, such as wired networks and direct-wired connections, and wireless media such as acoustic, radio, infrared, and other wireless media. The term “computer-readable media” as used herein includes both storage media and communications media.
Embodiments within the scope of the present invention also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise physical storage and/or memory media such as RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media.
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described herein. Rather, the specific features and acts described herein are disclosed as example forms of implementing the claims.
The development environment 200 allows the claims-based application 201 to be tested by simulating an environment in which the application 201 will be deployed. Specifically, even though the claims-based application 201 is still under development, a development-time claims provider 202 is included in the environment. The development time claims provider 202 issues claims 221 to the claims-based application 201, thereby allowing a developer to monitor how the claims-based application 201 will actually respond to particular claim, and if appropriate, make corrections. In
In one embodiment, the number and type of claims provided by the claims provider 202 is configurable. This is particularly advantageous as it allows the developer to control the type of claims received by the claims-based application 201, thereby controlling the scenario that the application 201 is tested against. This configuration of the type of claims, and even the timing of the claims may be provided by the development tool 203. The development tool 203 may be software that is separate from the claims-based application 201 under development. Alternatively or in addition, the development tool 203 may be integrated with the claims-based application 201 itself.
Before describing embodiments of the testing process in further detail, a data structure of a claim will be described with reference to the example claim data structure 300 of
Referring to
The method 400 also includes requesting (act 402) that a development-time claims provider provide a claim having an assertion of the requested particular type about a subject to the claims-based application. In
The request may be represented in one single communication to the claims provider, or may be done via multiple communications to the claims provider 202, perhaps even extended in time. For instance, in the single communication type, the requestor may simply specify that a claim of a particular assertion type is desired. The request may also indicate one or more values for the assertion type.
In the case of a single value, the claims provider may provide a single claim having the assertion type that specifies the value. For instance, perhaps the claims provider is instructed to provide an age assertion about a subject and that the value of the assertion is to be 29. The claims provider may then issue a single claim specifying itself as the issuer and that the subject is 29 years old.
In the case of multiple values, the claims provider may provide multiple claims each having a corresponding value. For example, if the corresponding data values are 5, 13, 19, 25 and 45 and the assertion type is age-based. The claims provider may output multiple claims on behalf of the issuer as follows: 1) the subject is 5 years old, 2) the same subject is 13 years old, 3) the same subject is 19 years old, 4) the same subject is 25 years old, 5) the same subject is 45 years old. Note that these claims are entirely inconsistent when viewed collectively. A subject can only be a single age. However, for purposes of development, the developer can now see how the claims-based application will react to these various claims. Since the issuer is the same, the claims-based application will treat each claim as being true, even though they are inconsistent. Accordingly, the claims-based application may be verified to take appropriate action for a wide variety of claims, and may trust claims regardless of whether the claims are actually factual, and even in cases in which the claims are internally inconsistent.
The request for claim(s) may also be provided in multiple communications from the requestor to the claims provider. For instance, the claims provider may be first instructed by the requestor (perhaps well in advance) to provide a certain set of one or more data values whenever a claim having a particular assertion type is requested. For instance, in the example above, the claims provider may be instructed (e.g., through policy or through some other description) to provide ages 5, 13, 19, 25 and 45 in separate claims regarding a subject in response to each request for claims having an age-based assertion type. As another example, of the assertion type has a Boolean value, the claims provider may be instructed in advance to provide two claims, one asserting a false value, and one asserting a true value, even with respect to the same claim. This is internally inconsistent, but the claims-based application may treat both as true, or both as false, for purposes of testing.
In one embodiment, the request is made to include (act 411) additional restrictions for the requested claims. For instance, in the claim of multiple claims being emitted in response to a request, the restrictions might indicate a minimum time between claim emissions. There might also be conditions attached to the claims emissions. For instance, perhaps a claim is made to make a claim of one assertion type if a memory location has a certain value, and another assertion type if the memory location has another value.
The request may be made by formulating (act 421) a description of at least one claim that is to be provided to the claims-based application at development time. This description may be made using a schema that is understood by the claims provider. Furthermore, the description is then provided (act 422) to the development-time claims provider.
Upon receiving a claim (act 501) from the claims provider, the claims-based application evaluates (act 502) the requested claim to determine whether (for testing purposes) an issuer of the requested claim is trusted by the claims-based application to make the assertion. This may be accomplished by identifying (act 511) the issuer by reading the issuer identifier in the claim. The application may then determine (act 512) whether the issuer is trusted to make assertions of the type made in the claim, and continue processing (act 513) based on a result of the determination. In one embodiment, the claims provider may be configured to make claims on behalf of one issuer who is trusted by the claims-based application, and another issuer who is not trusted by the claims-based provider. This allows the developer to test the claims-based application for situations in which the claim is not trusted as well.
In one embodiment, the issuer that is trusted by the claims-based application is trusted for purposes of development only. Once the application is developed, the developer may change a setting in the application that causes the application to no longer trust the development-time issuer. This is advantageous since the development-time issuer does not reliably make true statements, but rather sometimes intentionally makes false statements for testing purposes only. After deployment, however, claims-based application function best when they trust claims when there is a reasonable basis for believing the issuer reliably makes true claims.
There is no limit to the variety of configurations that the development-time claim provider may have. To illustrate the variety of such configurations, three examples will be provided. However, these examples should be viewed as illustrative of the wider variety of configurations for the claims provider.
In one embodiment, the development-time claims provider includes a user interface that allows the developing user to enter at least some of the information in the claim. For instance, the developer might enter claims that identify the issuer for purposes of making one or more claims about the subject. The developer might also enter the assertion type and/or a data value for the assertion into perhaps a form. Upon completing the form, the entered data may be used to populate some or all of the data fields of the claim. The claims provider would then provide the claim to the claims-based application.
In a second example, the claims provider may automatically generate the requested claims without user intervention and based only on information in the request, or other data available to the claims provider. For instance, a developer may have published policy information that specifies what data values are to be provided in particular assertion types. Once a request is received for a claim of the assertion type, the claims provider may automatically generate one or more claims without further user intervention.
In a third example, the development-time claims provider may be a security token service that is configured to provide the claim in a form of a security token. The security token provider may provide claims in the form of security tokens for purposes of development of an application,. If the claim is for development only, the claims provider may remove the typical guarantees to ensure the truth of the claim made. This is because the truth of the claim made to an application under development is not as important as verifying the proper operation of the claims-based application in response to the claim.
Accordingly, the principles described herein allow a claims-based application to be tested in an environment in which claims are actually supplied to the claims-based application. This allows a developer to monitor the behavior of the claims-based application in an environment closer to the environment in which the application will operate after deployment. It also gives the developer an opportunity to correct any errors found before deployment resulting in a better product at deployment.
present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes, which come within the meaning and range of equivalency of the claims, are to be embraced within their scope.