<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Converting the ASP.NET MVC project into OpenID</title>
	<atom:link href="http://pupeno.com/blog/converting-the-asp-net-mvc-project-into-openid/feed/" rel="self" type="application/rss+xml" />
	<link>http://pupeno.com/blog/converting-the-asp-net-mvc-project-into-openid/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=converting-the-asp-net-mvc-project-into-openid</link>
	<description>A bit of this, a bit of that and a lot about computers</description>
	<lastBuildDate>Sat, 03 Jul 2010 15:12:19 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Pablo</title>
		<link>http://pupeno.com/blog/converting-the-asp-net-mvc-project-into-openid/#comment-362</link>
		<dc:creator>Pablo</dc:creator>
		<pubDate>Fri, 16 Oct 2009 18:42:27 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=633#comment-362</guid>
		<description>Justin, I&#039;ve used the &lt;a href=&quot;http://jvance.com/pages/JQueryOpenIDPlugin.xhtml&quot; rel=&quot;nofollow&quot;&gt;jQuery plug in for OpenID&lt;/a&gt; which looks like this:
</description>
		<content:encoded><![CDATA[<p>Justin, I&#8217;ve used the <a href="http://jvance.com/pages/JQueryOpenIDPlugin.xhtml" rel="nofollow">jQuery plug in for OpenID</a> which looks like this:</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Justin Chase</title>
		<link>http://pupeno.com/blog/converting-the-asp-net-mvc-project-into-openid/#comment-361</link>
		<dc:creator>Justin Chase</dc:creator>
		<pubDate>Thu, 15 Oct 2009 23:32:40 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=633#comment-361</guid>
		<description>How does your view look?</description>
		<content:encoded><![CDATA[<p>How does your view look?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nimesh – Perception System</title>
		<link>http://pupeno.com/blog/converting-the-asp-net-mvc-project-into-openid/#comment-360</link>
		<dc:creator>Nimesh – Perception System</dc:creator>
		<pubDate>Sat, 29 Aug 2009 06:19:58 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=633#comment-360</guid>
		<description>Nice Post
Informative and useful one
I am .Net Developer and I am looking for this
Thanks for the great stuff.</description>
		<content:encoded><![CDATA[<p>Nice Post<br />
Informative and useful one<br />
I am .Net Developer and I am looking for this<br />
Thanks for the great stuff.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pablo</title>
		<link>http://pupeno.com/blog/converting-the-asp-net-mvc-project-into-openid/#comment-359</link>
		<dc:creator>Pablo</dc:creator>
		<pubDate>Thu, 30 Jul 2009 22:38:19 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=633#comment-359</guid>
		<description>Thank you Andrew for the comment. I believe all issues are solved now.</description>
		<content:encoded><![CDATA[<p>Thank you Andrew for the comment. I believe all issues are solved now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Arnott</title>
		<link>http://pupeno.com/blog/converting-the-asp-net-mvc-project-into-openid/#comment-358</link>
		<dc:creator>Andrew Arnott</dc:creator>
		<pubDate>Thu, 30 Jul 2009 15:21:06 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=633#comment-358</guid>
		<description>Great post.  Just a few bits of feedback:

Your response.GetExtension call collapsed to response.GetExtension() (note lack of generic parameter), probably due to HTML parsing.

You are setting user passwords to new Guids.  It&#039;s good that you&#039;re randomizing them, but guid generation is predictable, allowing someone to pretty easily brute-force attack what the password is.  While your site MAY not expose a web page that allows username/password login at all anyway, it&#039;s a good security mitigation to assign a cryptographically strong random password just to make sure.

Here&#039;s some code that generates cryptographically strong random strings:
		internal static readonly RandomNumberGenerator CryptoRandomDataGenerator = new RNGCryptoServiceProvider();

			byte[] buffer = new byte[length];
			CryptoRandomDataGenerator.GetBytes(buffer);
			return Convert.ToBase64String(buffer);


Consider initializing one static OpenIdRelyingParty field in your controller and reusing it for all logins.  OpenIdRelyingParty is relatively heavy to instantiate, and it&#039;s thread safe.  So the recommended pattern is to reuse one for all your logins on a single page.  I know the sample doesn&#039;t do this (the sample should be updated).</description>
		<content:encoded><![CDATA[<p>Great post.  Just a few bits of feedback:</p>
<p>Your response.GetExtension call collapsed to response.GetExtension() (note lack of generic parameter), probably due to HTML parsing.</p>
<p>You are setting user passwords to new Guids.  It&#8217;s good that you&#8217;re randomizing them, but guid generation is predictable, allowing someone to pretty easily brute-force attack what the password is.  While your site MAY not expose a web page that allows username/password login at all anyway, it&#8217;s a good security mitigation to assign a cryptographically strong random password just to make sure.</p>
<p>Here&#8217;s some code that generates cryptographically strong random strings:<br />
		internal static readonly RandomNumberGenerator CryptoRandomDataGenerator = new RNGCryptoServiceProvider();</p>
<p>			byte[] buffer = new byte[length];<br />
			CryptoRandomDataGenerator.GetBytes(buffer);<br />
			return Convert.ToBase64String(buffer);</p>
<p>Consider initializing one static OpenIdRelyingParty field in your controller and reusing it for all logins.  OpenIdRelyingParty is relatively heavy to instantiate, and it&#8217;s thread safe.  So the recommended pattern is to reuse one for all your logins on a single page.  I know the sample doesn&#8217;t do this (the sample should be updated).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
