<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D04AQ346fip7ImA9WxNUF0U.&quot;"><id>tag:blogger.com,1999:blog-6894552</id><updated>2009-11-09T08:59:02.016-08:00</updated><title>JMPInline</title><subtitle type="html">Read up on .NET news, tips, cautions... and other areas of technological interest.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.nerdbank.net/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>134</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><geo:lat>47.71828</geo:lat><geo:long>-122.197026</geo:long><link rel="self" href="http://feeds.feedburner.com/Jmpinline" type="application/atom+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CEUCRXw6fip7ImA9WxNVEkg.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-5787916446147412572</id><published>2009-10-22T15:57:00.001-07:00</published><updated>2009-10-22T15:57:44.216-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T15:57:44.216-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Feedback requested: New OpenID RP login UX prototype</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5787916446147412572/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=5787916446147412572" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5787916446147412572?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5787916446147412572?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/-23YGt-4310/feedback-requested-new-openid-rp-login.html" title="Feedback requested: New OpenID RP login UX prototype" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><content type="html">OpenID RP login UX  Live demo location: http://openidux.dotnetopenauth.net/    Design considerations  The DNOA login UX design document contains the design spec, and some of the reasoning that went into that design.  One high-level goal of all this work is to produce a set of HTML, CSS, and JS files that can work on any web platform, so that ruby, python, php, coldfusion, and (of course) ASP.NET &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-23YGt-4310:9F9XtGz4-1I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-23YGt-4310:9F9XtGz4-1I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-23YGt-4310:9F9XtGz4-1I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/-23YGt-4310" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/10/feedback-requested-new-openid-rp-login.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4GSHY5eCp7ImA9WxNWFEo.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-2677541554901398847</id><published>2009-10-10T15:57:00.002-07:00</published><updated>2009-10-13T15:28:49.820-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-13T15:28:49.820-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="MSBuild" /><title>Minify your EmbeddedResource .js and .css files in your MSBuild project</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2677541554901398847/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=2677541554901398847" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2677541554901398847?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2677541554901398847?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/ftINBIm0z1Y/minify-your-embeddedresource-js-and-css.html" title="Minify your EmbeddedResource .js and .css files in your MSBuild project" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">If you write a C# or VB.NET class library that contains ASP.NET controls that also have .js or .css files embedded in your assembly, you probably want to minify those files for optimal download size in production, but keep the files readable for coding and debugging.  What if you could add a single &lt;Import&amp;gt; to your class library’s project file that would automatically minify these files in &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ftINBIm0z1Y:40CCPlAS9Gg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ftINBIm0z1Y:40CCPlAS9Gg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ftINBIm0z1Y:40CCPlAS9Gg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/ftINBIm0z1Y" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/10/minify-your-embeddedresource-js-and-css.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QFQHo6cCp7ImA9WxNWEUw.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-559763819821896016</id><published>2009-10-09T11:22:00.001-07:00</published><updated>2009-10-09T12:08:31.418-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-09T12:08:31.418-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>VS2008 project template for OpenID and InfoCard relying parties</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/559763819821896016/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=559763819821896016" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/559763819821896016?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/559763819821896016?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/Rm26dfekG7c/vs2008-project-template-for-openid-and.html" title="VS2008 project template for OpenID and InfoCard relying parties" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">I finally built a project template to make it easier to write an OpenID relying party web site using C# and ASP.NET.  Up to this point all we had were the sample RPs that ship with DotNetOpenAuth, which were deliberately kept simple.  They didn’t use a real database, didn’t follow some best practices, and weren’t very real.    Now you can start your next web site with OpenID and InfoCard logins &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Rm26dfekG7c:IysmceoA8Qc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Rm26dfekG7c:IysmceoA8Qc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Rm26dfekG7c:IysmceoA8Qc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/Rm26dfekG7c" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/10/vs2008-project-template-for-openid-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMCQnk6eip7ImA9WxNQGUk.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-463330210496348733</id><published>2009-09-25T21:47:00.001-07:00</published><updated>2009-09-25T21:47:43.712-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-25T21:47:43.712-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Optimal OpenID UX finally underway</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/463330210496348733/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=463330210496348733" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/463330210496348733?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/463330210496348733?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/EJ-ph-wW6ss/optimal-openid-ux-finally-underway.html" title="Optimal OpenID UX finally underway" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">I’m finally making progress on building a set of HTML and javascript files that can be used on any OpenID relying party web site to allow visitors to easily log in with OpenID, without even knowing what OpenID is.  I mentioned my goal to do this some time ago, and now I have a small partially functional prototype.  Please try it out, and keep coming back and letting me know what you think of it &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=EJ-ph-wW6ss:kUDdOy14KYU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=EJ-ph-wW6ss:kUDdOy14KYU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=EJ-ph-wW6ss:kUDdOy14KYU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/EJ-ph-wW6ss" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/09/optimal-openid-ux-finally-underway.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EFRnc-cSp7ImA9WxNRE0s.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-1752187103953460465</id><published>2009-09-07T16:20:00.001-07:00</published><updated>2009-09-07T16:20:17.959-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T16:20:17.959-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>How to easily fetch OpenID attributes, regardless of the Provider</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/1752187103953460465/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=1752187103953460465" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1752187103953460465?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1752187103953460465?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/XR1ybdKL2JA/how-to-easily-fetch-openid-attributes.html" title="How to easily fetch OpenID attributes, regardless of the Provider" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">In a previous article, I bemoan the pain of writing an OpenID Relying Party that wants to fetch user attributes from their OpenID Provider, because of the at least 4 ways in which those attributes must be requested.  And then later I promised that DotNetOpenAuth would offer help to alleviate that pain.  That help has come.  It actually came way back on June 26, 2009.  But only now did I &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XR1ybdKL2JA:jAD80MlkTJA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XR1ybdKL2JA:jAD80MlkTJA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XR1ybdKL2JA:jAD80MlkTJA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/XR1ybdKL2JA" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/09/how-to-easily-fetch-openid-attributes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCQH0_fSp7ImA9WxJVEUw.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-2253850765828953916</id><published>2009-06-27T08:04:00.001-07:00</published><updated>2009-06-27T08:04:21.345-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-27T08:04:21.345-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenAuth v3.2 is done</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2253850765828953916/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=2253850765828953916" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2253850765828953916?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2253850765828953916?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/h_IHh0wyms0/dotnetopenauth-v32-is-done.html" title="DotNetOpenAuth v3.2 is done" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><content type="html">DotNetOpenAuth v3.2 just came off the presses.  Lots of feature work and a few interop fixes in this release.  The biggest highlights being:      Very simple story for both RPs and OPs interested in interoperating with others whether they use sreg or one of the several AX formats (finally!)     OAuth 1.0a support     PPID generation for OPs to protect customers' privacy.   Go download it.  As &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h_IHh0wyms0:JRYCw-SE6xA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h_IHh0wyms0:JRYCw-SE6xA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h_IHh0wyms0:JRYCw-SE6xA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/h_IHh0wyms0" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/06/dotnetopenauth-v32-is-done.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cBSXkzfCp7ImA9WxJWGU0.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4414599907683688872</id><published>2009-06-24T20:37:00.001-07:00</published><updated>2009-06-24T20:37:38.784-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-24T20:37:38.784-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>How to get ILMerge to work with .PFX files</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4414599907683688872/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=4414599907683688872" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4414599907683688872?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4414599907683688872?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/FbBKBOcTons/how-to-get-ilmerge-to-work-with-pfx.html" title="How to get ILMerge to work with .PFX files" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">ILMerge is an excellent tool for “linking” multiple assemblies into one.  But one of its switches, /keyfile:, which allows it to sign the resulting merged assembly, only accepts .snk files.  It reports no error if you feed it a password-protected .pfx key-pair file, but the resulting assembly is invalid.    &amp;gt;ilmerge /keyfile:some.pfx /out:merged\some.dll some.dll someother.dll

&amp;gt;sn -v merged\&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=FbBKBOcTons:LhjI0wpgx3Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=FbBKBOcTons:LhjI0wpgx3Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=FbBKBOcTons:LhjI0wpgx3Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/FbBKBOcTons" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/06/how-to-get-ilmerge-to-work-with-pfx.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8EQXY-cSp7ImA9WxJWFU0.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4663181356332210617</id><published>2009-06-20T07:23:00.001-07:00</published><updated>2009-06-20T07:23:20.859-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-20T07:23:20.859-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Help is coming for the Sreg/AX interop problem for OpenID</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4663181356332210617/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=4663181356332210617" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4663181356332210617?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4663181356332210617?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/B_LgVgQFaCE/help-is-coming-for-sregax-interop.html" title="Help is coming for the Sreg/AX interop problem for OpenID" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">Just to get your mouth watering for DotNetOpenAuth v3.2...  V3.2 has a new "behaviors" plugin capability that lets RPs and OPs get additional functionality with very little effort.  For example, OPs can add PPID identifier support very easily with just a few lines of code.    But of most interest I suspect is the sreg/AX interop behavior, which if activated in your web.config file (1 line), will &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=B_LgVgQFaCE:jv70TF9MI4M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=B_LgVgQFaCE:jv70TF9MI4M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=B_LgVgQFaCE:jv70TF9MI4M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/B_LgVgQFaCE" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/06/help-is-coming-for-sregax-interop.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcHSXoyfCp7ImA9WxJXGEk.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-9172457677012845843</id><published>2009-06-12T15:49:00.001-07:00</published><updated>2009-06-12T15:50:38.494-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-12T15:50:38.494-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>Reverse engineering ASP.NET Membership passwords and salts</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/9172457677012845843/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=9172457677012845843" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/9172457677012845843?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/9172457677012845843?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/QrIWS02DAEc/reverse-engineering-aspnet-membership.html" title="Reverse engineering ASP.NET Membership passwords and salts" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">I’m working on a project that was using the ASP.NET SQL Membership and I needed to remove the Membership provider from the system since we wanted more control over the user tables.  Our existing users had passwords that ASP.NET Membership had hashed and salted, and we needed to be able to maintain those user accounts, which means we have to be able to validate logins against the salted passwords.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=QrIWS02DAEc:mFHK70YdVMs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=QrIWS02DAEc:mFHK70YdVMs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=QrIWS02DAEc:mFHK70YdVMs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/QrIWS02DAEc" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/06/reverse-engineering-aspnet-membership.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ERHs9eyp7ImA9WxJQE0U.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-519803760122436280</id><published>2009-05-26T17:03:00.001-07:00</published><updated>2009-05-26T17:06:45.563-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-26T17:06:45.563-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>Caching results of .NET IEnumerable&lt;T&gt; generator methods</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/519803760122436280/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=519803760122436280" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/519803760122436280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/519803760122436280?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/XTGXyXcUfIo/caching-results-of-net-ienumerable.html" title="Caching results of .NET IEnumerable&amp;lt;T&amp;gt; generator methods" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">If you're already familiar with generator methods and want to jump to intelligent caching of their results, skip further down in this blog post.  In C#, generator methods are methods that use yield return to return an IEnumerable&lt;T&amp;gt; where the elements enumerated over are generated on-demand.  These are useful for a couple of scenarios.  One is deferred execution – not doing work until you &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XTGXyXcUfIo:mqfROuMzX5c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XTGXyXcUfIo:mqfROuMzX5c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XTGXyXcUfIo:mqfROuMzX5c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/XTGXyXcUfIo" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/05/caching-results-of-net-ienumerable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUAQnc9eip7ImA9WxJREUk.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-6277129781947055045</id><published>2009-05-11T16:59:00.002-07:00</published><updated>2009-05-12T08:47:23.962-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-12T08:47:23.962-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>Uri.EscapeDataPath and HttpUtility.UrlEncode are NOT the same</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/6277129781947055045/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=6277129781947055045" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6277129781947055045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6277129781947055045?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/OzMCzuzk_QI/uriescapedatapath-and.html" title="Uri.EscapeDataPath and HttpUtility.UrlEncode are NOT the same" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">For some reason Microsoft defined URI escaping twice: Uri.EscapeDataString and HttpUtility.UrlEncode seem to cover the same need.  There’s another pair: Uri.EscapeUriString and HttpUtility.UrlPathEncode which again seem to be redundant with each other.  But in particular I found a small difference in behavior between the first two methods that should be called out.  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=OzMCzuzk_QI:2opIDFKJ-nU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=OzMCzuzk_QI:2opIDFKJ-nU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=OzMCzuzk_QI:2opIDFKJ-nU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=OzMCzuzk_QI:2opIDFKJ-nU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=OzMCzuzk_QI:2opIDFKJ-nU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=OzMCzuzk_QI:2opIDFKJ-nU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=OzMCzuzk_QI:2opIDFKJ-nU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/OzMCzuzk_QI" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/05/uriescapedatapath-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4HQXs4eSp7ImA9WxJTE0s.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-3747244949545447239</id><published>2009-04-21T11:23:00.001-07:00</published><updated>2009-04-21T18:32:10.531-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-21T18:32:10.531-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Recent OpenID relying party vulnerabilities</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/3747244949545447239/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=3747244949545447239" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3747244949545447239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3747244949545447239?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/AW6m_6GqOLU/recent-openid-relying-party.html" title="Recent OpenID relying party vulnerabilities" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">The OSIS I5 OpenID interop testing is well underway.  Last weekend while testing some OpenID relying party web sites, John Bradley happened upon a web site that failed a particularly alarming test.  Further investigation revealed that the security hole affected all OpenID relying parties based on Janrain’s Ruby OpenID library.  Perhaps Janrain is using its Ruby library for RPXNow, because I &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=AW6m_6GqOLU:LLXgT242y9w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=AW6m_6GqOLU:LLXgT242y9w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=AW6m_6GqOLU:LLXgT242y9w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=AW6m_6GqOLU:LLXgT242y9w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=AW6m_6GqOLU:LLXgT242y9w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=AW6m_6GqOLU:LLXgT242y9w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=AW6m_6GqOLU:LLXgT242y9w:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/AW6m_6GqOLU" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/04/recent-openid-relying-party.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUEQHs7cSp7ImA9WxVaGU0.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-9082293404160820592</id><published>2009-04-16T11:40:00.001-07:00</published><updated>2009-04-16T11:40:01.509-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-16T11:40:01.509-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>DotNetOpenAuth 3.0 released</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/9082293404160820592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=9082293404160820592" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/9082293404160820592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/9082293404160820592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/XQerRr-3pSI/dotnetopenauth-30-released.html" title="DotNetOpenAuth 3.0 released" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">Download it now.  Previously named DotNetOpenId in its v1.x and 2.x releases, the v3.0 release is rechristened DotNetOpenAuth to reflect its support for multiple authentication and authorization protocols.  Sporting OpenID, OAuth and InfoCard support in its initial incarnation, it has been re-architected and largely rewritten to make adding more protocols fast and less error-prone.  Even if you’&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XQerRr-3pSI:YBpzvjc_9yo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XQerRr-3pSI:YBpzvjc_9yo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XQerRr-3pSI:YBpzvjc_9yo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XQerRr-3pSI:YBpzvjc_9yo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XQerRr-3pSI:YBpzvjc_9yo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XQerRr-3pSI:YBpzvjc_9yo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XQerRr-3pSI:YBpzvjc_9yo:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/XQerRr-3pSI" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/04/dotnetopenauth-30-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4GSX47fCp7ImA9WxVbFEg.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-1979516895100629805</id><published>2009-03-30T15:15:00.001-08:00</published><updated>2009-03-30T15:15:28.004-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-30T15:15:28.004-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>How to pretty much guarantee that you might get an email address with OpenID</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/1979516895100629805/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=1979516895100629805" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1979516895100629805?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1979516895100629805?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/obXQM-giyn0/how-to-pretty-much-guarantee-that-you.html" title="How to pretty much guarantee that you might get an email address with OpenID" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">OpenID itself is just an authentication protocol.  It takes OpenID extensions to get more information about the user like their name or email address.  In fact there are two popular extensions that can provide this kind of information: Simple Registration (sreg) and Attribute Exchange (AX).  A web site that wants to accept OpenID logins (this site is called a relying party, or “RP”) and also &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=obXQM-giyn0:7XePlesnMxg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=obXQM-giyn0:7XePlesnMxg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=obXQM-giyn0:7XePlesnMxg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=obXQM-giyn0:7XePlesnMxg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=obXQM-giyn0:7XePlesnMxg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=obXQM-giyn0:7XePlesnMxg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=obXQM-giyn0:7XePlesnMxg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/obXQM-giyn0" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/03/how-to-pretty-much-guarantee-that-you.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8GQ3w7fip7ImA9WxVUEk4.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-6535909426124499869</id><published>2009-03-16T13:10:00.001-08:00</published><updated>2009-03-16T13:10:22.206-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-16T13:10:22.206-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Need access to that internal?  Don’t touch that dial!</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/6535909426124499869/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=6535909426124499869" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6535909426124499869?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6535909426124499869?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/O9c7Sq9cMnM/need-access-to-that-internal-dont-touch.html" title="Need access to that internal?  Don’t touch that dial!" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">The blessing and curse of open source is that the source can be easily changed.    Internal types and members don’t need to be backward compatible with previous versions. This makes fixing bugs and feature enhancements much easier in future versions of the software.  Making types and members internal cuts down on documentation that must be written, read and maintained.  It protects callers from &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=O9c7Sq9cMnM:8UCX8Fz0gmk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=O9c7Sq9cMnM:8UCX8Fz0gmk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=O9c7Sq9cMnM:8UCX8Fz0gmk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=O9c7Sq9cMnM:8UCX8Fz0gmk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=O9c7Sq9cMnM:8UCX8Fz0gmk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=O9c7Sq9cMnM:8UCX8Fz0gmk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=O9c7Sq9cMnM:8UCX8Fz0gmk:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/O9c7Sq9cMnM" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/03/need-access-to-that-internal-dont-touch.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUAR30_eip7ImA9WxVVGE4.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4199750872284230469</id><published>2009-03-11T20:47:00.001-08:00</published><updated>2009-03-11T20:47:26.342-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-11T20:47:26.342-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>DotNetOpenAuth 3.0 Beta 2 released</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4199750872284230469/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=4199750872284230469" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4199750872284230469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4199750872284230469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/Xw3fkvjy680/dotnetopenauth-30-beta-2-released.html" title="DotNetOpenAuth 3.0 Beta 2 released" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">DotNetOpenAuth, previously named DotNetOpenId, is getting nearer to its major 3.0 release.   With beta 2, we have a security reviewed, feature complete library for .NET use of the OAuth and OpenID protocols.    Although Beta 1 was very rough and was not recommended for use in production, Beta 2 has passed enough security, interop and stability tests to warrant live web sites to use this version.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Xw3fkvjy680:wgWeA6_sTMs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Xw3fkvjy680:wgWeA6_sTMs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Xw3fkvjy680:wgWeA6_sTMs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Xw3fkvjy680:wgWeA6_sTMs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Xw3fkvjy680:wgWeA6_sTMs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Xw3fkvjy680:wgWeA6_sTMs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Xw3fkvjy680:wgWeA6_sTMs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/Xw3fkvjy680" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/03/dotnetopenauth-30-beta-2-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMDQ3s8cCp7ImA9WxVVFEQ.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-8584906155793522449</id><published>2009-03-07T21:34:00.001-08:00</published><updated>2009-03-07T21:34:32.578-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-07T21:34:32.578-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Replay protection for OpenID 1.x relying parties</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8584906155793522449/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=8584906155793522449" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8584906155793522449?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8584906155793522449?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/UXs9UQdgeMY/replay-protection-for-openid-1x-relying.html" title="Replay protection for OpenID 1.x relying parties" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">If you’re writing an OpenID Provider, you should have a strong appreciation for the security of your customers’ identities that you will be protecting.  One aspect of that protection is against replay attacks, where a man-in-the-middle sniffs the identity assertion from a Provider and replays it against the same relying party and manages to log in as the victim.  OpenID 2.0 provides built-in &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=UXs9UQdgeMY:1UN75etIiAE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=UXs9UQdgeMY:1UN75etIiAE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=UXs9UQdgeMY:1UN75etIiAE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=UXs9UQdgeMY:1UN75etIiAE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=UXs9UQdgeMY:1UN75etIiAE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=UXs9UQdgeMY:1UN75etIiAE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=UXs9UQdgeMY:1UN75etIiAE:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/UXs9UQdgeMY" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/03/replay-protection-for-openid-1x-relying.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UCQ346fyp7ImA9WxVVFEU.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-7656771900751107983</id><published>2009-03-07T21:14:00.001-08:00</published><updated>2009-03-07T21:14:22.017-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-07T21:14:22.017-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>OpenID association poisoning</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/7656771900751107983/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=7656771900751107983" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/7656771900751107983?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/7656771900751107983?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/efdjYA48e2M/openid-association-poisoning.html" title="OpenID association poisoning" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">As part of the OpenID protocol a relying party often establishes shared secrets (called ‘associations’) with identity providers that are used to verify identity assertions.  It occurred to me that an OpenID relying party might easily introduce a major security hole in the process of establishing an association that could allow identity spoofing.  Each association is assigned a handle, which is a &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=efdjYA48e2M:ZdIyEmFsgl8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=efdjYA48e2M:ZdIyEmFsgl8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=efdjYA48e2M:ZdIyEmFsgl8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=efdjYA48e2M:ZdIyEmFsgl8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=efdjYA48e2M:ZdIyEmFsgl8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=efdjYA48e2M:ZdIyEmFsgl8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=efdjYA48e2M:ZdIyEmFsgl8:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/efdjYA48e2M" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/03/openid-association-poisoning.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIHSXwyeCp7ImA9WxVWGEo.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-187875298715523966</id><published>2009-02-28T19:35:00.001-08:00</published><updated>2009-02-28T19:35:38.290-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-28T19:35:38.290-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Fixing the OpenID login user experience</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/187875298715523966/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=187875298715523966" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/187875298715523966?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/187875298715523966?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/Wm0QCz-jLcY/fixing-openid-login-user-experience.html" title="Fixing the OpenID login user experience" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total><content type="html">The user experience of OpenID at Relying Party web sites is so important to get right.  OpenID is right for your web site's visitors – no doubt in my mind about that.  But we need to make sure it's very easy for your visitors to use so you don’t lose them when they've been pre-wired for the password anti-pattern.    Several big companies like Yahoo and Google have invested a lot of effort into &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Wm0QCz-jLcY:t5RXIJlAjPI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Wm0QCz-jLcY:t5RXIJlAjPI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Wm0QCz-jLcY:t5RXIJlAjPI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Wm0QCz-jLcY:t5RXIJlAjPI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Wm0QCz-jLcY:t5RXIJlAjPI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Wm0QCz-jLcY:t5RXIJlAjPI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Wm0QCz-jLcY:t5RXIJlAjPI:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/Wm0QCz-jLcY" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/02/fixing-openid-login-user-experience.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4EQH87eyp7ImA9WxVQGEw.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-8101242782698493178</id><published>2009-02-04T22:21:00.001-08:00</published><updated>2009-02-04T22:21:41.103-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-04T22:21:41.103-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>DotNetOpenId v3.0 Beta 1 released</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8101242782698493178/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=8101242782698493178" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8101242782698493178?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8101242782698493178?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/NRlaONUHmRw/dotnetopenid-v30-beta-1-released.html" title="DotNetOpenId v3.0 Beta 1 released" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">Tonight DotNetOpenId, soon to be renamed DotNetOpenAuth, released beta 1 of the major v3.0 release.  You can download the bits from Ohloh.  Although downloads should remember that as a beta this version should not be used in production, there are several new features that should be worth investigating and building a web application around while the final release is still in development:     OAuth&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=k3bw1Wwa"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=k3bw1Wwa" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=2BQJbCJO"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=2BQJbCJO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=P8yioW7O"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=P8yioW7O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=UsRxCboq"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/NRlaONUHmRw" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/02/dotnetopenid-v30-beta-1-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8BQ3gyeCp7ImA9WxVQFUU.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-5928235289547519137</id><published>2009-02-02T07:00:00.001-08:00</published><updated>2009-02-02T07:00:52.690-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-02T07:00:52.690-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenId is looking for a new home</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5928235289547519137/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=5928235289547519137" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5928235289547519137?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5928235289547519137?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/WluynKUr_1Y/dotnetopenid-is-looking-for-new-home.html" title="DotNetOpenId is looking for a new home" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">DotNetOpenId started on Google Code.  But we’re outgrowing it.  We’d like to move to a shared hosting server where we can have automated tests, nightly builds, and a better web site and online documentation.  This new web site will cost real money though, which is beyond my FOSS-hobby budget.   Please if you like DotNetOpenId, consider making a donation toward making this happen!    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=s9wAQilX"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=s9wAQilX" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=dl2R3GR3"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=dl2R3GR3" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=IQsXZt7u"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=IQsXZt7u" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=x1sxvLBy"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/WluynKUr_1Y" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/02/dotnetopenid-is-looking-for-new-home.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8MQnw-cSp7ImA9WxVQFUU.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-6038694200949236819</id><published>2009-02-01T20:34:00.000-08:00</published><updated>2009-02-02T06:11:23.259-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-02T06:11:23.259-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenId v3.0 to feature built-in OAuth support</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/6038694200949236819/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=6038694200949236819" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6038694200949236819?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6038694200949236819?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/_qjZmTb2ExY/dotnetopenid-v30-to-feature-built-in.html" title="DotNetOpenId v3.0 to feature built-in OAuth support" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><content type="html">  The next major release of DotNetOpenId, slated for a release in or around March 2009, will add OAuth support to the mix.  If you don’t know what OAuth is, it basically provides a way for your site’s visitors to authorize your site to download their email address book without giving you their email address and password.  It’s of course much bigger than that, but that’s the easiest way to start &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=GbOC4As2"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=GbOC4As2" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=G8TLMECO"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=G8TLMECO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=bmkpGYhF"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=bmkpGYhF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=SFhe5CLp"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/_qjZmTb2ExY" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/02/dotnetopenid-v30-to-feature-built-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UHQXYzeCp7ImA9WxVREkw.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-7688060321420319525</id><published>2009-01-17T11:07:00.001-08:00</published><updated>2009-01-17T11:07:10.880-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-17T11:07:10.880-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Why using RPXNow is a bad idea</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/7688060321420319525/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=7688060321420319525" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/7688060321420319525?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/7688060321420319525?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/1ARhBdQbiX4/why-using-rpxnow-is-bad-idea.html" title="Why using RPXNow is a bad idea" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><content type="html">Janrain has been a great influence in the OpenID community and I thank them for all their efforts.  They are, nevertheless, a company that must generate profits, and their recent invention of RPXNow is one attempt at doing that.  It generates revenue for them: check.  But is it really in your web site’s best interest to use RPXNow instead of using OpenID directly?  I don’t think so.  I have not &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=bxxH4h8N"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=bxxH4h8N" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=q9JAtGJn"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=q9JAtGJn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=9QTNOn9A"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=9QTNOn9A" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=2rUgQmpR"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/1ARhBdQbiX4" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/01/why-using-rpxnow-is-bad-idea.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcFQXs8fCp7ImA9WxVSFE4.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-6786335621407655741</id><published>2009-01-08T10:06:00.001-08:00</published><updated>2009-01-08T10:06:50.574-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-08T10:06:50.574-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>Remotely enable RDP</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/6786335621407655741/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=6786335621407655741" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6786335621407655741?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6786335621407655741?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/mX45qYYWpgg/remotely-enable-rdp.html" title="Remotely enable RDP" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Have you ever been away from your work PC, tried to Remote Desktop (RDP/mstsc) into it, only to realize that you’ve forgotten to enable RDP before you left work?  Ever shake your head at the irony that if you could only remote in, you could enable RDP?  Well now you can:  Method 1  The simplest way is to run a free tool:  http://www.intelliadmin.com/blog/2006/06/&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=MVjUFqmb"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=MVjUFqmb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=QcTyqy4L"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=QcTyqy4L" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=sI2UeUMQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=sI2UeUMQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=PyiwOWTv"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/mX45qYYWpgg" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/01/remotely-enable-rdp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08NR384fip7ImA9WxRWFk4.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-149437800957451233</id><published>2008-11-02T07:31:00.001-08:00</published><updated>2008-11-02T07:31:36.136-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-02T07:31:36.136-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>OpenID on Classic ASP</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/149437800957451233/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=149437800957451233" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/149437800957451233?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/149437800957451233?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/_zqDixhOAVQ/openid-on-classic-asp.html" title="OpenID on Classic ASP" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07368060275387397811" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Several people have asked for an OpenID library for Classic ASP.  Yes, it's several years deprecated, but there are still some major and smaller sites using it.  Classic ASP allows the consumption of COM/ActiveX objects, so it turns out DotNetOpenId can be used by Classic ASP!  But DotNetOpenId isn't a COM server.  Not in its released form anyway.  But there is now a CTP of DotNetOpenId that does&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=7OKq8yiG"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=7OKq8yiG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=XV2re5xv"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=XV2re5xv" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=4V0jVFQM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=4V0jVFQM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=hqEVcAaa"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/_zqDixhOAVQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/11/openid-on-classic-asp.html</feedburner:origLink></entry></feed>
