Consumer Identification
Consumer Identification plays a key role in the Service Intermediary where consumers of a service can be identified based on a certain criteria. Consumers can be individuals as well as an organization and also could be an application.
Motivation:
1) Consumers need to be authenticated; WS-Security based operations need to be enforced and privileged access needs to be provided at runtime.
2) Existing industry standard based entities could be used to identify a consumer such as IP,IP-Range, WS-Sec Token, HTTP Auth token, X509 Certificate, SAML tokens
3) Enforcement Points can make use of the ID to enforce consumer specific policies. Such as SLA, Deprecation, WS Security
4) Existing directory stores can be used to get user/org/group specific information for access control depending on runtime authentication using the consumer Identity.
5) Tracing service usage based on consumers
6) Using alias credentials for ID transformation.
Target usage:
Mostly B2B, C2B
WS Intermediary/proxy usage:
High
Domain:
Network based applications
Participants/Actors:
Consumers, Applications
Consequences
Downsides: needs configuration; if the traffic manager/Box goes down then no service would be accessible.
Dependency:
This capability will depend on the creating of a consumer application with or without users.
Motivation Scenario 1
For authenticating a consumer of a services one needs to have a handle to some form of IDs by which these consumers could be authenticated against a store/repository.
Keeping with the one way request only or two way request/response paradigms the point and mode by which a requester could be identified is either using transport specific details or to be more precise using information contained in the request itself.
Motivation Scenario 2
Currently, from an industry acceptance perspective the following are the ways by which user/consumer credentials are sent across with the message.
a) Context based or transport header based, here the way context information could be used is as follows
i. IP based: in IP based identification a consumer will be identified by the IP in case of a Servlet based request (JMS or other protocols may not make this available). An IP based identification again would have certain restrictions in case the user needs to login from a different machine or location where the IP is different it would fail to identify the user/consumer
ii. IP range: In this an IP range is provided such as 192.168.0.1 to 192.168.0.255 this would also allow users to be identified as coming from a group.
iii. HTTP Auth token, in case http transport mechanism is used then the auth token could be used for identifying the consumer.
b) Content based where the user information is embedded in the request itself.
i. Say for instance using WS-Security the SOAP header would have the WS-Sec token element which will have the credentials of the consumer.
ii. X509 Certificate based authentication: here the certificates content could be used to identify the consumer.
iii. SAML token could be extracted and then could be validated against a provider. In this scenario a SSO feature could also be introduced.
Motivation Scenario 3
When we talk about a policy what we mean is that it has certain terms associated with it and these terms are nothing but assertions which would be validated at runtime. So from a general perspective a policy could have a number of assertions and each assertion would result in a pass or a failure depending on a context. Let’s understand the concept of a policy with some examples.
Policy 1
Say for instance a service provider organization and a consumer application have an agreement by which the PO agrees to certain terms such as being SLA, Security, and Routing. Let’s drill down into the various terms:
SLA
The service level agreement dictates that the PO will provide a service uptime of 90%, responses will be served within 1ms.
Security
The PO agrees to decrypt all messages from a consumer application
Routing
The PO agrees to do a performance based routing where the best possible server in terms of response time needs to be used.
Policy 2
In this case the PO agrees to the following
SLA
PO will provide a service uptime of 60% and a response time which is within 50 ms
Security
All messages will be encrypted and sent by the consumer and the PO will decrypt them as well as encrypt the response.
Understanding the policies and conclusion
What we see here is that for every consumer identified the policy assertions and the evaluation criteria could be very different. In such a case one would need to define consumer centric policies, of course there will be scenarios where some assertions could be global in nature and could be applied across consumers.
A generic policy framework would certainly add value in terms of making the policy more consumer as well as business centric.
Detailed policy framework would be available as a separate document.
Motivation scenario 4, 5
Consumer identification could also play a major role in reporting where consumer applications as well as provider organization could track the usage of a service in terms of the actual requester. Further this could also play a significant role in understanding how a particular service reacts for various consumers, such as one can track that requests coming from a specific consumer failed the maximum number of times where as other consumers never had any issues. The possible outcome could be that the users failed to provide enough information required for processing a request, say the security assertion dictates that the message should not be encrypted but the consumer sent encrypted messages.
The other eye opener is that the notion of an agreement between a provider and a consumer should be made available to a consumer so that consumers can send requests which confirms to the agreement and this again is another motivating factor to have policies which are consumer centric.
Motivation Scenario 6
There could be situations where native services/ endpoint services could have a security mechanism by which access is allowed to a service. Suppose this service is provisioned in an intermediary and doesn’t have any security terms associated with the policy, credentials for the native service needs to be added to the request otherwise the service will fail from the native service provider.
In case such a case the consumer identity could be directly used or could fetch credentials required by the native service from local/remote store and add the credential to the request (in case of SOAP add it as Ws Sec token if that’s what is mandated by the native service)
Recent Comments