<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
	>
<channel>
	<title>Comments on: DotNetNuke Multi-Factor Authentication Provider</title>
	<atom:link href="http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/</link>
	<description>Observations about the intersection of technology, business, and intellectual property</description>
	<lastBuildDate>Wed, 21 Oct 2009 16:16:51 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Eugene</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-2520</link>
		<dc:creator>Eugene</dc:creator>
		<pubDate>Tue, 06 Oct 2009 20:08:36 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-2520</guid>
		<description>Sorry Brandon, in my last comment missing my Config file:


 
    
      
      
      
      
      
    
  
    
      
    
    
      
    
    
      
    
  
  

Thank Brandon for your effort!

Eugene</description>
		<content:encoded><![CDATA[<p>Sorry Brandon, in my last comment missing my Config file:</p>
<p>Thank Brandon for your effort!</p>
<p>Eugene</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eugene</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-2519</link>
		<dc:creator>Eugene</dc:creator>
		<pubDate>Tue, 06 Oct 2009 20:05:36 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-2519</guid>
		<description>Hi Brandon,

I have some issues with Multifactor Membership Provider - I downloaded and install last week latest DNN (5.1.1) and you module.

My task is to build our company intranet web site, but we are planning to use Digital Certificates to authenticate all our users (some sales people located in different countries outside of our office), so requirement is to hide all UserID/Password of usual form authentication and use only Digital Certificate to make login transparent and seamless - we are already have other .NET system  (not DNN based) in production with exactly the same authentication.

So is it possible to hide (disable/bypass) existing form authentication and use you module for digital certificate authentication ?

Back to error I have with you module:

InnerException: The given key was not present in the dictionary.
FileName:
FileLineNumber: 0
FileColumnNumber: 0
Method: System.ThrowHelper.ThrowKeyNotFoundException
StackTrace:
Message: DotNetNuke.Services.Exceptions.PageLoadException: The given key was not present in the dictionary. ---&gt; System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.ThrowHelper.ThrowKeyNotFoundException() at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at BrandonHaynes.Membership.MultifactorMembershipProvider.b__4(String name) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) at BrandonHaynes.Membership.MultifactorMembershipProvider.MultifactorLogin(MultifactorUser user, Credential credential, UserLoginStatus&amp; loginStatus) at BrandonHaynes.Membership.MultifactorMembershipProvider.UserLogin(Int32 portalId, String username, String password, String authType, String verificationCode, UserLoginStatus&amp; loginStatus) at DotNetNuke.Entities.Users.UserController.ValidateUser(Int32 portalId, String Username, String Password, String authType, String VerificationCode, String PortalName, String IP, UserLoginStatus&amp; loginStatus) at DotNetNuke.Modules.Admin.Authentication.Login.cmdLogin_Click(Object sender, EventArgs e) at System.Web.UI.WebControls.Button.OnClick(EventArgs e) at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- End of inner exception stack trace ---
Source:
Server Name: QVCONL01

My Config file:

 
    
      
      
      
      
      
    
  
    
      
    
    
      
    
    
      
    
  
  

Thank you Brandon for your effort!

Eugene</description>
		<content:encoded><![CDATA[<p>Hi Brandon,</p>
<p>I have some issues with Multifactor Membership Provider &#8211; I downloaded and install last week latest DNN (5.1.1) and you module.</p>
<p>My task is to build our company intranet web site, but we are planning to use Digital Certificates to authenticate all our users (some sales people located in different countries outside of our office), so requirement is to hide all UserID/Password of usual form authentication and use only Digital Certificate to make login transparent and seamless &#8211; we are already have other .NET system  (not DNN based) in production with exactly the same authentication.</p>
<p>So is it possible to hide (disable/bypass) existing form authentication and use you module for digital certificate authentication ?</p>
<p>Back to error I have with you module:</p>
<p>InnerException: The given key was not present in the dictionary.<br />
FileName:<br />
FileLineNumber: 0<br />
FileColumnNumber: 0<br />
Method: System.ThrowHelper.ThrowKeyNotFoundException<br />
StackTrace:<br />
Message: DotNetNuke.Services.Exceptions.PageLoadException: The given key was not present in the dictionary. &#8212;&gt; System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.ThrowHelper.ThrowKeyNotFoundException() at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at BrandonHaynes.Membership.MultifactorMembershipProvider.b__4(String name) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) at BrandonHaynes.Membership.MultifactorMembershipProvider.MultifactorLogin(MultifactorUser user, Credential credential, UserLoginStatus&amp; loginStatus) at&nbsp;<a href="http://BrandonHaynes.Membership.MultifactorMembershipProvider.Us" title="http://BrandonHaynes.Membership.MultifactorMembershipProvider. " target="_blank">BrandonHaynes.Membership.MultifactorMemb&#8230;</a>erLogin(Int32 portalId, String username, String password, String authType, String verificationCode, UserLoginStatus&amp; loginStatus) at&nbsp;<a href="http://DotNetNuke.Entities.Users.Us" title="http://DotNetNuke.Entities.Users. " target="_blank">DotNetNuke.Entities.Users.Us</a>erController.ValidateUser(Int32 portalId, String Username, String Password, String authType, String VerificationCode, String PortalName, String IP, UserLoginStatus&amp; loginStatus) at DotNetNuke.Modules.Admin.Authentication.Login.cmdLogin_Click(Object sender, EventArgs e) at System.Web.UI.WebControls.Button.OnClick(EventArgs e) at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) &#8212; End of inner exception stack trace &#8212;<br />
Source:<br />
Server Name: QVCONL01</p>
<p>My Config file:</p>
<p>Thank you Brandon for your effort!</p>
<p>Eugene</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-2513</link>
		<dc:creator>Jonathan</dc:creator>
		<pubDate>Thu, 01 Oct 2009 03:13:10 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-2513</guid>
		<description>Hi Brandon -- This could not be used to control access to specified tabs, correct? For example, many banks and e-commerce sites require re-authenticating when attempting to open certain pages (e.g., account profile, credit card info, etc.) even if the user as logged into the site.

Thanks.</description>
		<content:encoded><![CDATA[<p>Hi Brandon &#8212; This could not be used to control access to specified tabs, correct? For example, many banks and e-commerce sites require re-authenticating when attempting to open certain pages (e.g., account profile, credit card info, etc.) even if the user as logged into the site.</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Will Baker</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-1054</link>
		<dc:creator>Will Baker</dc:creator>
		<pubDate>Thu, 14 May 2009 15:09:48 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-1054</guid>
		<description>Hi Brandon,

Yes, thanks for your reply - it does help shed some light on what options are open...

I think some more research is needed!

Will</description>
		<content:encoded><![CDATA[<p>Hi Brandon,</p>
<p>Yes, thanks for your reply &#8211; it does help shed some light on what options are open&#8230;</p>
<p>I think some more research is needed!</p>
<p>Will</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brandon Haynes</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-980</link>
		<dc:creator>Brandon Haynes</dc:creator>
		<pubDate>Mon, 11 May 2009 12:39:55 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-980</guid>
		<description>Hi Will,

The applicability of this provider will depend on your exact needs.  If your RADIUS server will be serving as an authoritative store for your authentication information then your best bet will be to consume a simple membership provider (a la http://wcfradiusservice.codeplex.com/) or create one that extends System.Web.Security.MembershipProvider.

If you require additional UI, consider an authentication extension of a flavor similar to that in the DotNetNuke core OpenID or LiveID providers.  This additional provider would exist as a login option alongside whatever other authentication options you wanted to enable on your system (or it could be the sole option, if that is your requirement).

If you need to enforce authentication factors on a role-by-role basis, then this provider may meet that need (note that it still requires first-factor authentication against an ASP.NET membership store).  This does appear, prima facia, to be the least likely of the cases presented above.  

Hope this helps!

Brandon</description>
		<content:encoded><![CDATA[<p>Hi Will,</p>
<p>The applicability of this provider will depend on your exact needs.  If your RADIUS server will be serving as an authoritative store for your authentication information then your best bet will be to consume a simple membership provider (a la <a href="http://wcfradiusservice.codeplex.com/)" rel="nofollow">http://wcfradiusservice.codeplex.com/)</a> or create one that extends System.Web.Security.MembershipProvider.</p>
<p>If you require additional UI, consider an authentication extension of a flavor similar to that in the DotNetNuke core OpenID or LiveID providers.  This additional provider would exist as a login option alongside whatever other authentication options you wanted to enable on your system (or it could be the sole option, if that is your requirement).</p>
<p>If you need to enforce authentication factors on a role-by-role basis, then this provider may meet that need (note that it still requires first-factor authentication against an&nbsp;<a href="http://ASP.NET" title="http://ASP. " target="_blank">ASP.NET</a> membership store).  This does appear, prima facia, to be the least likely of the cases presented above.  </p>
<p>Hope this helps!</p>
<p>Brandon</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Will Baker</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-979</link>
		<dc:creator>Will Baker</dc:creator>
		<pubDate>Mon, 11 May 2009 09:03:11 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-979</guid>
		<description>This looks really interesting. 

I&#039;m currently looking to authenticate an extranet against a clients RADIUS server. Is it possible that your provider could be extended to handle this?

Thanks,

Will</description>
		<content:encoded><![CDATA[<p>This looks really interesting. </p>
<p>I&#8217;m currently looking to authenticate an extranet against a clients RADIUS server. Is it possible that your provider could be extended to handle this?</p>
<p>Thanks,</p>
<p>Will</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brandon Haynes</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-848</link>
		<dc:creator>Brandon Haynes</dc:creator>
		<pubDate>Tue, 05 May 2009 11:48:52 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-848</guid>
		<description>@Mitchel: Thanks for that catch!  I&#039;ve adjusted the details herein to rectify this oversight.

@Deep: The 5.x line is due to become the recommended version in the near future; as such, it is unlikely that I will provide a 4.x build.  However, there is no reason that you could not build a 4.x-compatible version yourself.  There are only a few places where I am using 5.x-specific calls; these would have to be adjusted to their 4.x deprecated variants.  There should be no functionality that would not be easily transferable to 4.x.

@Everyone: Appreciate the feedback.  I hope the community finds it useful.</description>
		<content:encoded><![CDATA[<p>@Mitchel: Thanks for that catch!  I&#8217;ve adjusted the details herein to rectify this oversight.</p>
<p>@Deep: The 5.x line is due to become the recommended version in the near future; as such, it is unlikely that I will provide a 4.x build.  However, there is no reason that you could not build a 4.x-compatible version yourself.  There are only a few places where I am using 5.x-specific calls; these would have to be adjusted to their 4.x deprecated variants.  There should be no functionality that would not be easily transferable to 4.x.</p>
<p>@Everyone: Appreciate the feedback.  I hope the community finds it useful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Deep</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-846</link>
		<dc:creator>Deep</dc:creator>
		<pubDate>Tue, 05 May 2009 11:26:41 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-846</guid>
		<description>Great Stuff, like God sent, I was just looking for this :-)

Just one question, we are using 4.9.3, can we somehow tweak this to use with this version??

Thanx in advance</description>
		<content:encoded><![CDATA[<p>Great Stuff, like God sent, I was just looking for this <img src='http://blogs.law.harvard.edu/brandonhaynes/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Just one question, we are using 4.9.3, can we somehow tweak this to use with this version??</p>
<p>Thanx in advance</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Allender</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-826</link>
		<dc:creator>Scott Allender</dc:creator>
		<pubDate>Mon, 04 May 2009 23:11:05 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-826</guid>
		<description>Wicked smart authentication system.  Looking forward to testing it out on some of my own systems.</description>
		<content:encoded><![CDATA[<p>Wicked smart authentication system.  Looking forward to testing it out on some of my own systems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Horton</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-809</link>
		<dc:creator>Mike Horton</dc:creator>
		<pubDate>Mon, 04 May 2009 04:08:50 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-809</guid>
		<description>Nice work Brandon.</description>
		<content:encoded><![CDATA[<p>Nice work Brandon.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mitchel Sellers</title>
		<link>http://blogs.law.harvard.edu/brandonhaynes/2009/05/01/dotnetnuke-multi-factor-authentication-provider/comment-page-1/#comment-722</link>
		<dc:creator>Mitchel Sellers</dc:creator>
		<pubDate>Fri, 01 May 2009 15:17:19 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.law.harvard.edu/brandonhaynes/?p=50#comment-722</guid>
		<description>Brandon,

This looks like a great provider!

Just one note about your lockout situation.  After running the SQL update you must re-cycle the application before the change to the provider will be there.</description>
		<content:encoded><![CDATA[<p>Brandon,</p>
<p>This looks like a great provider!</p>
<p>Just one note about your lockout situation.  After running the SQL update you must re-cycle the application before the change to the provider will be there.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
