<?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;CEUCRHY6cSp7ImA9WxBWFE8.&quot;"><id>tag:blogger.com,1999:blog-6894552</id><updated>2010-02-05T18:11:05.819-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>138</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Jmpinline" /><feedburner:info uri="jmpinline" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><geo:lat>47.71828</geo:lat><geo:long>-122.197026</geo:long><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><entry gd:etag="W/&quot;CkICQn05cSp7ImA9WxBQFks.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4643078507506158768</id><published>2010-01-16T08:49:00.001-08:00</published><updated>2010-01-16T08:49:23.329-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-16T08:49:23.329-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="DotNetOpenAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenAuth’s “call home” reporting</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4643078507506158768/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=4643078507506158768" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4643078507506158768?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4643078507506158768?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/fmSVnuT69dY/dotnetopenauths-call-home-reporting.html" title="DotNetOpenAuth’s “call home” reporting" /><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">A few months ago I asked how people would feel if DotNetOpenAuth collected feature statistics and sent them back to the library's authors so we get a better feel for what features are used, errors that are common.  The feedback I got was positive, so v3.4 has reporting turned on by default, but you can opt out either entirely or just omit certain details from the report by adding some simple tags&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=fmSVnuT69dY:rACK6h3yHpo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo: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=fmSVnuT69dY:rACK6h3yHpo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=fmSVnuT69dY:rACK6h3yHpo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=fmSVnuT69dY:rACK6h3yHpo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo: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/fmSVnuT69dY" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2010/01/dotnetopenauths-call-home-reporting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEGSXo7cSp7ImA9WxBQFks.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-8360348461670980249</id><published>2010-01-15T15:20:00.001-08:00</published><updated>2010-01-16T08:50:28.409-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-16T08:50:28.409-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="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.4 now available</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8360348461670980249/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=8360348461670980249" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8360348461670980249?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8360348461670980249?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/ihyTDHYwo8A/dotnetopenauth-v34-now-available.html" title="DotNetOpenAuth v3.4 now available" /><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">You can go download DotNetOpenAuth v3.4 today.  Highlights of the new version include:     Support for Google Apps for Domains issued OpenIDs.  This required special work since Google has their own flavor of OpenID discovery that had to be supported until something like Google’s scenario get’s standardized.     Identifier discovery extensibility (this is how Google Apps support was enabled, but &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ihyTDHYwo8A:HZAD1zWK7zo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo: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=ihyTDHYwo8A:HZAD1zWK7zo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ihyTDHYwo8A:HZAD1zWK7zo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ihyTDHYwo8A:HZAD1zWK7zo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo: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/ihyTDHYwo8A" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2010/01/dotnetopenauth-v34-now-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYAQH4-fSp7ImA9WxBTE00.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-3258801272732475606</id><published>2009-12-08T12:12:00.001-08:00</published><updated>2009-12-08T12:12:21.055-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-08T12:12:21.055-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Rest in peace, ExtremeSwank OpenID and OAuth</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/3258801272732475606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=3258801272732475606" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3258801272732475606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3258801272732475606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/HAE3TTevwks/rest-in-peace-extremeswank-openid-and.html" title="Rest in peace, ExtremeSwank OpenID and OAuth" /><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">ExtremeSwankOpenID and ExtremeSwankOAuth, both libraries authored by John Ehn, have been discontinued according to the project sites respective home pages which have a new note that reads: “Note: This … Consumer is no longer in development.”  ExtremeSwankOpenID was stagnant in development lately, and when a recent OpenID vulnerability was identified as impacting the ExtremeSwankOpenID library due&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=HAE3TTevwks:p2rh91j9dPs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs: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=HAE3TTevwks:p2rh91j9dPs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=HAE3TTevwks:p2rh91j9dPs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=HAE3TTevwks:p2rh91j9dPs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs: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/HAE3TTevwks" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/12/rest-in-peace-extremeswank-openid-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQHSHc8eyp7ImA9WxNaGE4.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-5860511818364616908</id><published>2009-12-03T01:23:00.001-08:00</published><updated>2009-12-03T01:25:39.973-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T01:25:39.973-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="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.3 is released</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5860511818364616908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=5860511818364616908" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5860511818364616908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5860511818364616908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/m8OLQRFSZRk/dotnetopenauth-v33-is-released.html" title="DotNetOpenAuth v3.3 is 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">6</thr:total><content type="html">It’s been nearly six months since v3.2 was released.  So what’s in v3.3 that took so long to bake?  Well, a lot of it was waiting for and getting used to Code Contracts to mature enough to bet on the technology.    The most exciting changes though are the new OpenIdSelector control, and the new project template that helps you get going fast and strong with a new web site that accepts OpenID and/&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=m8OLQRFSZRk:qLx-hHnv-uQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ: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=m8OLQRFSZRk:qLx-hHnv-uQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=m8OLQRFSZRk:qLx-hHnv-uQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=m8OLQRFSZRk:qLx-hHnv-uQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ: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/m8OLQRFSZRk" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/12/dotnetopenauth-v33-is-released.html</feedburner:origLink></entry><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="4 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">4</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="3 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">3</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="9 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">9</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></feed>
