The Liberty ID-WSF architecture appears to be a
very different beast than the OGSA paradigm. (Clients
use "discovery" services that locate desired provider services; the
discovery services respond back with ID-WSF EPRs that wrap both the
endpoint information and any necessary security credentials that
client needs to provide for service authorization.) For a brief perspective on the Liberty ID-WSF architecture, I
would recommend the following document sections:
There are three specifications concerning their
security architecture that I have found to be relevant to the discussions we've
been entertaining:
The LibertyDisco spec is perhaps the most
interesting, as it draws from the other two to create a ID-WSF profile for
EPRs. In their terminology, an ID-WSF EPR
comprises the "invocation context" necessary for interacting with the targeted
service instance. Within the EPR's <Metadata> document, they use <SecurityContext> element(s) to express a
grouping of security-specific metadata regarding the service provider. In
this regard, their <SecurityContext> EPR metatadata extension is
similar to the OGSA BSP-Core's <EndpointKeyInfo> metadata
extension.
A <SecurityContext> contains one or more <SecurityMechId> elements and zero or more <Token> elements. (See the example ID-WSF EPR
in the postscript at the end of this email.) The <SecurityMechId>
element (defined in LibertySecMech) contains a URI that identifies the
peer (transport) and message authentication mechanisms required by the service
provider. Examples are:
- urn:liberty:security:2005-02:TLS:X509
(Server-authenticated TLS transport-level security with authentication
of the client via the WS-S X.509 Token Profile at the SOAP level)
- urn:liberty:security:2006-08:ClientTLS:SAMLV2
(Mutually-authenticated TLS transport-level security with
authentication of the client via the WS-S SAML2 Token Profile at the SOAP
level)
- urn:liberty:security:2003-08:null:null (No
transport-level security or message-level security)
There does not appear to be a mechanism
for specifying if/what encryption needs to be done at the message level (as
required by the service resource). They suggest that message-level
encryption be used in the presence of intermediaries, but it would appear that
doing so would be at the discretion of the client; there is no mechanism
for making it a provider-requirement.
Unlike the OGSA BSP-Core, the <Token> elements with in a ID-WSF <SecurityContext> do
not describe security tokens that are to be used expressely for authenticating
the resource service to the client. Rather, they are either (a) authZ
security tokens for the client to place in the outgoing message's SOAP WS-S
security header or (b) a "target identity" to be placed in the outgoing
message's ID-WSF SOAP header analogously to the way we use reference
parameters.
Additionally, neither the LibertySecMech nor the
LibertySOAPBinding documents specify any mechanism for indicating the security
context required by the client for response messages.
In summary, I don't believe that the Liberty ID-WSF
profiles on SOAP and WS-Addressing will provide us complete solutions for the
considerations that I outlined in the recommendations document. Their
<SecurityMechID> element is a good
approach for advertising authentication mechanisms, but it lacks the
ability to express the message-confidentiality requirements of the service
resource. They do not profile the binding of key/cert material to EPRs for
the purpose of authenticating the resource/endpoint to the client (let alone the
intended usage for such key material). They do not profile a mechanism for
indicating client requirements for response message-level security.
-Duane
PS -- The following is an example of an ID-WSF
EPR taken from the LibertyDisco specification containing two alternative
security contexts for interaction:
<wsa:Metadata>
<ds:Abstract>
This
is a personal profile containing common name
information.
</ds:Abstract>
<ds:ProviderID>http://profile-provider.com/</ds:Provi
derID>
<ds:ServiceType>urn:liberty:id-sis-pp
:2003-08</ds:ServiceType>
<sbf:Framework version="2.0"
/>
<ds:SecurityContext>
<ds:SecurityMechID>
urn:liberty:security:2006-08:ClientTL
S:SAMLV2
</ds:SecurityMechID>
<ds:SecurityMechID>
urn:liberty:security:2005-02:Cli
entTLS:SAML
</ds:SecurityMechID>
<sec:Token
wsu:id="_10"
usage="urn:liberty:security:tokenusage:2006-08:Secu
rityToken">
<!-- some security token goes here
-->
</sec:Token>
</ds:SecurityContext>
<ds:SecurityContext
>
<ds:SecurityMechID>
urn:liberty:security:2005-02:ClientTLS:X509
</ds:SecurityMechID>
<sec:Token
wsu:id="_20"
usage="urn:liberty:security:tokenusage:20
06-08:InvocationIdentity">
<!-- Identity Token
goes here
-->
</sec:Token>
</ds:SecurityContext>
<ds:Options>
<ds:Option>urn:liberty:id-sis-pp</ds:Option>
<ds:Option>urn:liberty:id-sis-pp:cn</ds:Option>
<ds:Option>urn:liberty:id-sis-pp:can</ds:Option>
<ds:Option>urn:liberty:id-sis-pp:can:cn</ds:Op
tion>
</ds:Options>
</wsa:Metadata>
</wsa:EndpointReference>