Hi Brandon,
I have as well some issues with Multifactor Membership Provider - I donloaded 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 autenticate all our users (some sales people located in diffrent countries outside of our office), so requirement is to hide all UserID/Password of usual form autentication 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. ---> 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.<GetFactorsByUser>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& loginStatus) at BrandonHaynes.Membership.MultifactorMembershipProvider.UserLogin(Int32 portalId, String username, String password, String authType, String verificationCode, UserLoginStatus& loginStatus) at DotNetNuke.Entities.Users.UserController.ValidateUser(Int32 portalId, String Username, String Password, String authType, String VerificationCode, String PortalName, String IP, UserLoginStatus& 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 EVENT_ARGUMENT) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String EVENT_ARGUMENT) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- End of inner exception stack trace ---
Source:
Server Name: QVCONL01
My Config file:
<brandonHaynes>
<authenticationFactors>
<factor name="Membership" type="BrandonHaynes.Membership.Factors.MembershipFactor, BrandonHaynes.Membership.MultifactorMembershipProvider" />
<factor name="SMTP" text="Enter your one-time password:" type="BrandonHaynes.Membership.Factors.SmtpFactor, BrandonHaynes.Membership.MultifactorMembershipProvider" />
<factor name="SMS" appId="3165534" userName="username" password="password" text="Enter your one-time password:" type="BrandonHaynes.Membership.Factors.SMSFactor, BrandonHaynes.Membership.MultifactorMembershipProvider" />
<factor name="X509" text="A valid certificate is required to access this account." type="BrandonHaynes.Membership.Factors.ClientCertificateFactor, BrandonHaynes.Membership.MultifactorMembershipProvider" />
<factor name="YubiKey" id="" key="" text="Active your YubiKey now:" type="BrandonHaynes.Membership.Factors.YubiKeyFactor, BrandonHaynes.Membership.MultifactorMembershipProvider" />
</authenticationFactors>
<authenticationMap>
<role name="HollandOffice">
<factor name="YubiKey" />
</role>
<role name="UKOffice">
<factor name="X509" />
</role>
<role name="Membership">
<factor name="SMTP" />
</role>
</authenticationMap>
</brandonHaynes>
Thank Brandon for your effort!
Eugene