
Signature
Sincerely,
Dmitriy Lapshin [C# / .NET MVP]
Bring the power of unit testing to the VS .NET IDE today!
http://www.x-unity.net/teststudio.aspx
The HTTPS/SSL session is established automatically by the browser when one
browses to a HTTPS site. The client and server can now securely send and
receive information. One can dig in deeper by looking at the TLS/SSL
specifications.
Now the question is - Why do I need to install a server certificate on the
client when HTTPS does not need it? Well, the answer is that WSE clients and
sites do not negotiate like HTTPS/SSL. This is a major shortcoming of WSE.
Wouldn't it be nice to have an API/ability that will negotiate a security
context token automatically? This way one can secure the username token also.
In previous threads (by Williams), a method to extact a public key from the
.snk file generated by the sn tool is described. This way, one does not need
certificates on the clients.
Maybe someone can shed light on why there is no API/ability to establish a
seesion like browsing to a HTTPS site with a browser does ? I find it an
amazing flaw. At least, an API that will get the public certificate from the
server would be nice so one does not have to worry about having clients to
install one.
Even with a certificate on a client, you can find several articles on how to
secure the Username token which is not entirely satisfactory. In this case,
one can send a fake UserName token to get the Security Context token. After
that, you can use Security Context token to secure the Username token.
> Hello,
>
[quoted text clipped - 12 lines]
> need to install the server certificate on the client? I don't have to do so
> for SSL, why this situation is different?
Sidd - 25 Mar 2005 08:18 GMT
In the Secure Conversation sample, the client needs the server's cert in
order to encrypt a part of the RST (RequestSecurityToken) message (the
message to the token issuer saying that i am requesting an SCT). This part
of the RST that it is encrypting is the client's entropy. Think of the
clients entropy as a clients random key. Now the STS takes this clients
entropy, generates a server's entropy and creates a key based from these two
entropy's. In the response message, the STS includes the server's entropy
which is encrypted with the clients entropy. When the client receives this,
it knows how to combine the its entropy (the clients entropy) with the
entropy it just received (the server's entropy) to create a session key
(which is the SCT's key) using the same algorithm the server did.
With regards to the sending a fake username to get an SCT. Welll, if this
were the case, then the entire SCT thing would be broken right ? :)
Typically the STS would have a policy that says "I only trust RST messages
to be signed with a Username token that have the username=Fred, or that are
in the role "Administrator". Without this policy, there is no way (except
for users writing code) to authorize and validate the message (the RST).
Hope this helps clarify things a little better?
Sidd [MSFT]
> The HTTPS/SSL session is established automatically by the browser when one
> browses to a HTTPS site. The client and server can now securely send and
[quoted text clipped - 38 lines]
> > need to install the server certificate on the client? I don't have to do so
> > for SSL, why this situation is different?