Hi

Thanks for the replay

see inline

2009/3/20 Massimiliano Masi <[email protected]>

> Hi,
>
> In general you should encrypt a message using the
> public key of the recipient and sign with the private
> key of the sender. This enforces integrity (the signature), authentication
> (the signature) and confidentiality (the encryption).
>
> As I told you, the RSTR is not correct. You really should
> use the RSTRC instead, since it is only request/response.

I forgot to have this element, but it's only  sudo xml

>
>
> The service ``trust'' the token, since it is signed
> by the STS, and we suppose that the STS that owns the
> private key.
>
> Pay attention for the STS to not be an oracle.


We're implementing a sts of our own, and trying to get it all together. The
reason why I'm asking all these questions, for getting the hole picture.

Also, is the way I described the security token correct? This token is of
course not how it looks in the real world but have the important elements.

cheers, håkon



> Please, look at the
> 11 suggestions on how to write security protocols, written
> in 80's by Martin Abadi.
>
>
>
>
> Quoting Håkon Sagehaug <[email protected]>:
>
>  Hi all,
>>
>> I've been trying to really to understand ws-trust from the more general
>> perspective, so maybe not the question should go out here, but since
>> rampart
>> is ws-trust implementation I hope it's okay.
>>
>> My setup is the classical ws-trust setup
>> 1.Client
>> 2.Sts
>> 3.Target service
>>
>> The target service does not know about user, but trust the token issued by
>> the sts, tokens is a set of roles.
>>
>> Flow
>> 1. The client ask for a the tokens belonging to him, is this context a
>> list
>> of roles, based on the username and password of the user. Signed and
>> encrypted by the uses private key
>>
>> 2. Sts service then validates the signature and decrypts it.
>> 3.Creates a token with the roles for the user and signs/encrypts this with
>> the private key of the sts service. And wrapping it inside a
>> RequestSecuritTokenResponse lookking something like this
>>
>> <RequestSecuritTokenResponse>
>> <com:Token xmlns:com="http://common"; xmlns:oas="
>>
>> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
>> "
>> oas:Id="id_145663">
>>                     <com:Username>testu</com:Username>
>>                     <com:RoleInProject>
>>                        <com:Role>ADMIN</com:Role>
>>                        <com:Project>testu_project</com:Project>
>>                     </com:RoleInProject>
>>                  </com:Token>
>>               </ns:RequestedSecurityToken>
>>               <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#
>> ">
>>                     <ds:SignedInfo>
>>                        <ds:CanonicalizationMethod Algorithm="
>> http://www.w3.org/2001/10/xml-exc-c14n#"; />
>>                        <ds:SignatureMethod Algorithm="
>> http://www.w3.org/2000/09/xmldsig#rsa-sha1"; />
>>                        <ds:Reference
>> URI="#_0de82a70b0ad68d7b29387828b2ba3ec">
>>                           <ds:Transforms>
>>                              <ds:Transform Algorithm="
>> http://www.w3.org/2000/09/xmldsig#enveloped-signature"; />
>>                              <ds:Transform Algorithm="
>> http://www.w3.org/2001/10/xml-exc-c14n#";>
>>                                 <ec:InclusiveNamespaces xmlns:ec="
>> http://www.w3.org/2001/10/xml-exc-c14n#"; PrefixList="code ds kind rw saml
>> samlp typens #default xsd xsi" />
>>                              </ds:Transform>
>>                           </ds:Transforms>
>>                           <ds:DigestMethod Algorithm="
>> http://www.w3.org/2000/09/xmldsig#sha1"; />
>>
>> <ds:DigestValue>EFf0+eeFzPPm3eG+MJkfYbTsrrY=</ds:DigestValue>
>>                        </ds:Reference>
>>                     </ds:SignedInfo>
>>                     <ds:SignatureValue>GQt+8+NOn=</ds:SignatureValue>
>>                     <ds:KeyInfo>
>>
>> <ds:X509Data>dnfjngjknfjkgnjkfngjknfjgnjf</ds:X509Certificate>
>>                        </ds:X509Data>
>>                     </ds:KeyInfo>
>>                  </ds:Signature>
>> <RequestSecuritTokenResponse>
>>
>> This of course is much similar to a saml assertion.
>>
>> then this is encrypted and signed using the sts private key.
>>
>> 4 The client verifies that the message comes form the sts and extracts the
>> token from the message,  finally places it in the header for the request
>> to
>> the target service. signs and encrypts it with the client's private key.
>>
>> 5. Now the target service decrypt the message, extract the token form the
>> header , looks to see if this was signed with the private key of the sts.
>> If
>> so the perform the authorization based on the attributes in the token.
>>
>> Is this the correct way of accomplishing trust, and how the target service
>> knows that these tokens is issued by the sts service?
>>
>> Really appreciate replays on this topic
>>
>> cheers, Håkon
>>
>> --
>> Håkon Sagehaug, Scientific Programmer
>> Parallab, Bergen Center for Computational Science (BCCS)
>> UNIFOB AS (University of Bergen Research Company)
>>
>>
>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
>
>


-- 
Håkon Sagehaug, Scientific Programmer
Parallab, Bergen Center for Computational Science (BCCS)
UNIFOB AS (University of Bergen Research Company)

Reply via email to