<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>XML Eye for the Object Guy : XML</title><link>http://blogs.msdn.com/tewald/archive/tags/XML/default.aspx</link><description>Tags: XML</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Sharing the fruits of summer's labors</title><link>http://blogs.msdn.com/tewald/archive/2003/09/19/57292.aspx</link><pubDate>Sat, 20 Sep 2003 00:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:57292</guid><dc:creator>tewald</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/tewald/comments/57292.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tewald/commentrss.aspx?PostID=57292</wfw:commentRss><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;
    I did a lot of XML work over the summer. One of the byproducts was a &lt;a href="http://www.gotdotnet.com/team/tewald/xmlreaders.zip"&gt;pair
    of XML readers&lt;/a&gt;. The XmlElementReader wraps an XmlReader that is positioned on
    an Element node and allows you to read that element, but nothing more. It's useful
    for passing an XmlReader to a method, but ensuring that it only consumes the current
    element and nothing more. The XmlInscopeNamespaceReader also wraps an XmlReader. It
    provides&amp;#160;a method to lookup all of prefix/namespace URI bindings that are inscope
    at any given time.&lt;/body&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=57292" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tewald/archive/tags/XML/default.aspx">XML</category><category domain="http://blogs.msdn.com/tewald/archive/tags/System.Xml/default.aspx">System.Xml</category></item><item><title>I'm on MSDN TV</title><link>http://blogs.msdn.com/tewald/archive/2003/09/19/57287.aspx</link><pubDate>Fri, 19 Sep 2003 23:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:57287</guid><dc:creator>tewald</dc:creator><slash:comments>18</slash:comments><comments>http://blogs.msdn.com/tewald/comments/57287.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tewald/commentrss.aspx?PostID=57287</wfw:commentRss><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;p&gt;
        As &lt;a href="http://staff.develop.com/candera/weblog2/PermaLink.aspx/8b92ee28-480c-4bc7-93f6-fcb63ad75310"&gt;Craig &lt;/a&gt;noted,
        my talk from the Applied XML DevCon in Portland, OR last August is now online courtesy
        of &lt;a href="http://msdn.microsoft.com/msdntv/default.aspx"&gt;MSDN TV&lt;/a&gt;! It's in two
        parts, here are links to &lt;a href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20030916WebServicesTE/manifest.xml"&gt;part
        1&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20030918WebServicesTE/manifest.xml"&gt;part
        2&lt;/a&gt;. I had a great time at that show, and this was a really fun talk and had a big
        impact on people (like Rich, who mentions it &lt;a href="http://webservices.xml.com/pub/a/ws/2003/09/02/typeless.html"&gt;here&lt;/a&gt;).&amp;#160;Lot's
        of people at the show and via email have asked for more info about the ideas I talked
        about. I haven't had time to write something up yet, I'm hoping to do it when I'm
        back from next week's vacation.
    &lt;/p&gt;
&lt;/body&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=57287" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tewald/archive/tags/XML/default.aspx">XML</category></item><item><title>I need to clarify...</title><link>http://blogs.msdn.com/tewald/archive/2003/09/12/57286.aspx</link><pubDate>Fri, 12 Sep 2003 21:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:57286</guid><dc:creator>tewald</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/tewald/comments/57286.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tewald/commentrss.aspx?PostID=57286</wfw:commentRss><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;p&gt;
        Reading Micheal M's comment, I realized that I was not clear enough in my last post.When
        I said I didn't want to think about security, I meant &lt;em&gt;as a plumber&lt;/em&gt;. Part
        of my responsibility &lt;em&gt;as the designer or developer of an application&lt;/em&gt; is, as
        Micheal M, says, to think about everything as a possible security hole. He is absolutely
        right and I did not intend to imply otherwise. 
    &lt;/p&gt;
    &lt;p&gt;
        But&amp;#160;I need help. I can't write my own cryptography engine. I don't have the time,
        and, more importantly, I won't get it right. Similarly, I don't want to have to write
        my own SSL hand-shake to establish a secure channel with an HTTPS endpoint.&amp;#160;Luckly,
        those things are provided for me by my platform. However, that doesn't mean I get
        to abdicate all responsibility. At the very least, I have to:
    &lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;
            Make sure I understand how these technologies work and I know how to use them correctly&lt;/li&gt;
        &lt;li&gt;
            Decide how to use these technologies to my application so that I ensure data integrity
            and confidentiality wherever it's required&lt;/li&gt;
        &lt;li&gt;
            Make sure I test my application to ensure that the technology does what I expect it
            to&lt;/li&gt;
        &lt;li&gt;
            Make sure I keep my platform up-to-date with patches that fix security holes&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;
        SSL strikes a reasonable balance. I don't have to worry about implementing the cryptography
        or handshake protocol myself. I do have to worry about when and how I use it, keeping
        my implementation patched, and whether or not the cert presented to the client does
        in fact identify the server. That's tractable for me with my level of security expertise.
    &lt;/p&gt;
    &lt;p&gt;
        My point about &lt;a href="http://www-106.ibm.com/developerworks/webservices/library/ws-secure/"&gt;WS-Security&lt;/a&gt; and
        all the threads about &lt;a href="http://ws.microsoft.com/MsComService/MsCom.asmx"&gt;MsComServices &lt;/a&gt;was
        that I need to get more from my platform. I want to get replay detection and secure
        channels from my platform. As with SSL, I will still have to think long and hard about
        how and when to use these features, make sure I keep my implementation up-to-date,
        and test my implementation to make sure it works. But I won't have to implement everything
        myself.
    &lt;/p&gt;
    &lt;p&gt;
        Things are moving in the right direction with the &lt;a href="http://msdn.microsoft.com/webservices/building/wse/default.aspx"&gt;WSE
        2.0 Tech Preview&lt;/a&gt;. &lt;a href="http://msdn.microsoft.com/webservices/building/wse/default.aspx"&gt;WSE
        1.0&lt;/a&gt; provided the atoms for &lt;a href="http://www-106.ibm.com/developerworks/webservices/library/ws-secure/"&gt;WS-Security&lt;/a&gt;.
        2.0 provides molecules like &lt;a href="http://msdn.microsoft.com/ws/2002/12/ws-secure-conversation/"&gt;WS-SecureConversation&lt;/a&gt;.
        Increasing the level of abstraction in this way is key.
    &lt;/p&gt;
    &lt;p&gt;
        Thanks for raising this point Micheal. I don't wany anyone to think that I or anyone
        else at Microsoft is not VERY concerned about making software more secure. Ironically,
        I actually see removing myself from the lower level implementation details as a way
        to increase the security of my software. Using the right security features from my
        platform is a better choice, as long as I do so responsibly (see the bullet list above).
    &lt;/p&gt;
&lt;/body&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=57286" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tewald/archive/tags/WS-Security/default.aspx">WS-Security</category><category domain="http://blogs.msdn.com/tewald/archive/tags/XML/default.aspx">XML</category></item><item><title>"But I'm a plumber..."</title><link>http://blogs.msdn.com/tewald/archive/2003/09/11/57283.aspx</link><pubDate>Thu, 11 Sep 2003 09:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:57283</guid><dc:creator>tewald</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/tewald/comments/57283.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tewald/commentrss.aspx?PostID=57283</wfw:commentRss><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;p&gt;
        I've spent a lot of time with &lt;a href="http://www-106.ibm.com/developerworks/webservices/library/ws-secure/"&gt;WS-Security&lt;/a&gt; lately,
        partly because of the bruhaha over its use in &lt;a href="http://ws.microsoft.com/MsComService/MsCom.asmx"&gt;MsComService&lt;/a&gt;,
        and partly because I'm digging more deeply into WSE 2.0. Like most of my friends (and
        a penguin &lt;a href="http://www.gotdotnet.com/team/mgudgin"&gt;Gudge &lt;/a&gt;knows), I'm a
        plumber. I like spending time thinking about how to program with XML messages (feeding &lt;a href="http://radio.weblogs.com/0120191/2003/07/30.html#a140"&gt;my
        reputed addition&lt;/a&gt;). But I realized last weekend that there are limits, even for
        me. I realized that I want someone else to take care of security for me... 
    &lt;/p&gt;
    &lt;p&gt;
        It's not that I'm not interested - I think it's a fascinating topic. But I have too
        many other things going on to lose myself in it, and I don't trust myself to build
        something secure if I have to worry about all the details of signing, encryption,
        nonces, hashes, etc. myself. Hopefully a day will soon come when I can simply request
        a secure channel to a distant service and sit back and relax, confident that someone
        else has thought about the hard security problems for me. 
    &lt;/p&gt;
    &lt;p&gt;
        Then I can spend more time thinking about what the bodies of my message look like
        - the problem domain specific part that it's hard for other folks to help me with... 
    &lt;/p&gt;
&lt;/body&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=57283" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tewald/archive/tags/WS-Security/default.aspx">WS-Security</category><category domain="http://blogs.msdn.com/tewald/archive/tags/XML/default.aspx">XML</category></item><item><title>Changes in the works...</title><link>http://blogs.msdn.com/tewald/archive/2003/09/11/57281.aspx</link><pubDate>Thu, 11 Sep 2003 09:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:57281</guid><dc:creator>tewald</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/tewald/comments/57281.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tewald/commentrss.aspx?PostID=57281</wfw:commentRss><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;p&gt;
        Sam &lt;a href="http://www.intertwingly.net/blog/1586.html"&gt;welcomed me back&lt;/a&gt;&amp;#160;to
        the blogosphere... 
    &lt;/p&gt;
    &lt;p&gt;
        Your points are well taken. People here are very aware of the fact that developers
        may well look to Microsoft.com's services as an example to emulate, so they try to
        make sure they do the right thing. In this case, there's a been a lot of confusion
        around the fact that &lt;a href="http://www-106.ibm.com/developerworks/webservices/library/ws-secure/"&gt;WS-Security&lt;/a&gt; really
        offers levels of protection and, in this case, the level required is pretty low. That
        said, the&amp;#160;guys who built the service are working on the details for replay detection.
        I'll keep you posted as I find out more... 
    &lt;/p&gt;
    &lt;p&gt;
        In the same thread, &lt;a href="http://www.kuro5hin.org/user/Carnage4Life/diary"&gt;Dare&lt;/a&gt; commented
        that the use of&amp;#160;WS-Security in this context doesn't make sense to him and that
        a token like the one used in the Google service makes more sense to him. The problem
        with adding a token to every operation is that it goes in the body of the message.
        Since the goal in microsoft.com's case is to consume the token at a router that then
        passes the message on, it needs to be in a header so as to avoid violating the SOAP
        processing rules. Once you're using a header, you've got more code to write in any
        case. Given that, why not use an existing header that identifies users? I think it
        would have been more confusing if they'd made up some new header of&amp;#160;their own... 
    &lt;/p&gt;
&lt;/body&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=57281" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tewald/archive/tags/WS-Security/default.aspx">WS-Security</category><category domain="http://blogs.msdn.com/tewald/archive/tags/XML/default.aspx">XML</category></item><item><title>One more thing...</title><link>http://blogs.msdn.com/tewald/archive/2003/09/04/57279.aspx</link><pubDate>Fri, 05 Sep 2003 04:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:57279</guid><dc:creator>tewald</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/tewald/comments/57279.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tewald/commentrss.aspx?PostID=57279</wfw:commentRss><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;p&gt;
        Someone pointed out that signing a message wouldn't actually solve the all the issues
        Simon raised. It would stop someone from tampering with a message, but it wouldn't
        stop someone from replaying a message. You need to take additional steps to protect
        against that as noted on &lt;a href="http://www.intertwingly.net/blog/1585.html#c1062709767"&gt;this
        thread&lt;/a&gt; at Sam Ruby's blog. 
    &lt;/p&gt;
    &lt;p&gt;
        However, the real point I was trying to make on behalf of the developers at Microsoft.com
        who built this prototype service, is that security wasn't really their goal. 
    &lt;/p&gt;
&lt;/body&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=57279" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tewald/archive/tags/WS-Security/default.aspx">WS-Security</category><category domain="http://blogs.msdn.com/tewald/archive/tags/XML/default.aspx">XML</category></item><item><title>Using UsernameToken with the new microsoft.com Web service</title><link>http://blogs.msdn.com/tewald/archive/2003/09/03/57276.aspx</link><pubDate>Thu, 04 Sep 2003 03:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:57276</guid><dc:creator>tewald</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/tewald/comments/57276.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tewald/commentrss.aspx?PostID=57276</wfw:commentRss><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;p&gt;
        I spent my summer deep in an engineering project, the purpose of which will come to
        light in coming months. Now that the first phase of that work is complete, I have
        time to start posting again. And what better place to start than by answering questions
        raised by &lt;a href="http://www.pocketsoap.com/weblog/2003/08/1357.html"&gt;Simon Fell's
        recent post&lt;/a&gt; about the use of &lt;a href="http://msdn.microsoft.com/webservices/understanding/specs/default.aspx?pull=/library/en-us/dnglobspec/html/wssecurspecindex.asp"&gt;WS-Security&lt;/a&gt; with
        the new &lt;a href="http://msdn.microsoft.com/webservices/building/livewebservices/mscomservices/default.aspx"&gt;Microsoft.com
        web services&lt;/a&gt;.
    &lt;/p&gt;
    &lt;p&gt;
        Some of the guys at microsoft.com spent their summer working on the server-side infrastructure
        they need in place to support production Web service. They recently launched a prototype
        service that's intended to vet the plumbing. To use the service, developers have to
        register and get a username and password. Request messages carry a WS-Security UsernameToken
        containing the username and a digest based on the password, a nonce, etc.. Simon points
        out that, because the message is not signed, it doesn't provide any security. He's
        right, but that really isn't the intent. Rather, the UsernameToken is used like a
        cookie. It tracks invocations to gather metrics about how the services are used and
        to throttle requests so that servers aren't overwhelmed. The goal is to test the server
        plumbing and get a sense of how people use it. Google and Amazon do similar things
        with their public services.
    &lt;/p&gt;
    &lt;p&gt;
        So, why use a WS-Security header to do this? The service designers felt that a header
        would be preferable to an extra parameter on every call. A SOAP header made more sense
        than an HTTP header, because, long-term it is likely that messages will end up being
        routed on the server side for a range of operational and deployment reasons. Given
        that, WS-Security's UsernameToken mechanism seemed to fit the bill. They thought about
        requiring messages to be signed with the token to help protect against swiped tokens,
        modified messages, etc. They decided against signing for several reasons:
    &lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;
            the service is read-only 
        &lt;/li&gt;
        &lt;li&gt;
            there's no private data to protect 
        &lt;/li&gt;
        &lt;li&gt;
            requiring signing would make it much harder to build message from any toolkit that
            doesn't support WS-Security 
        &lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;
        From my perspective, the last issue is the most significant. It's pretty easy to layer
        in a UsernameToken with a password digest with a toolkit that has no knowledge of
        WS-Security (like &lt;a href="http://www.myelin.co.nz/post/2003/9/4/#200309041"&gt;this
        Python client&lt;/a&gt;). It's harder to layer in XMLDSIG support.
    &lt;/p&gt;
    &lt;p&gt;
        The people who maintain the new service's web site are working on updating the text
        there to make it clearer that the service is not intended to be secure. (They're also
        working on posting the documentation for the service online.) Beyond that, there are
        two other changes they could make. FIrst, they could modify the service to require
        a signature, thereby mitigating the issues Simon raised. However, that would make
        consuming the service from any non-XMLDSIG enabled toolkit essentially impossible.
        Alternatively, they could change the service to use some other header that people
        don't associate with security, e.g., 
        &lt;MSCOMDEVTOKEN /&gt;
        . It isn't clear to me yet that either of those changes makes sense. But people here
        are definitely listening to your feedback!
    &lt;/p&gt;
&lt;/body&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=57276" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tewald/archive/tags/WS-Security/default.aspx">WS-Security</category><category domain="http://blogs.msdn.com/tewald/archive/tags/XML/default.aspx">XML</category></item></channel></rss>