c# - Custom MembershipProvider with SQL Users Table -


short version:

how use custom membership provider validates users against multiple domains sql users database in such way on user's first log in, entry in users database made of necessary information? there way modify of information comes ad before goes sql database, in parse of fields?

long version:

i'm working on mvc4 web application giving me headache. users logging in 2 domains (dc=domainone,dc=company,dc=com) , (dc=domaintwo,dc=company,dc=com). first domain relatively standard domain 1000 users. nothing fancy. there 2 types of users in second domain: "live" password (about 100 users), meaning user can directly authenticate against domain, , password stored salted hash in field within directory (well on 200,000 users). these latter users, have grab stored salted-hash directory, hash password enter when logging in , compare two. have authentication working without issue in custom membershipprovider below.

however, users table in sql not populating user's information upon log in. necessary me use sql database user's table, rather ad information alone, because there several necessary fields within ad not useable application without being parsed first. example, employeenumber field may have "12345" jane smith , field may blank joe smith employee number being part of dn in dn="cn=joe smith <#1234>,dc=domainone,dc=company,dc=com"

membershipprovider

    public override bool validateuser(string username, string password)     {         companyauthenticationservice connectiontoad = new companyauthenticationservice ();          //test domain log in first         if (connectiontoad.validateagainstad(username, password,"domainone"))             return true;          //test team domain log in next         if (connectiontoad.validateagainstad(username, password,"domaintwo"))             return true;          //test team hash last         if (connectiontoad.validateagainstteamhash(username, password))             return true;          return false;     }  //all other methods not implemented 

web.config

//several lines truncated

<connectionstrings>   <add name="programnamedb"        connectionstring="data source=.\sqlexpress;integrated security=true;initial catalog=programname"        providername="system.data.sqlclient" /> </connectionstrings> 

//several lines truncated

<authentication mode="forms">   <forms loginurl="/account/login" timeout="30"/> </authentication> 

//several lines truncated

<profile defaultprovider="defaultprofileprovider">   <providers>     <add name="defaultprofileprovider" type="system.web.providers.defaultprofileprovider, system.web.providers, version=1.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" connectionstringname="programnamedb" applicationname="/" />   </providers> </profile> <membership defaultprovider="programnamemembershipprovider">   <providers>     <clear/>     <add name="programnamemembershipprovider"          type="programname.services.security.membershipproviders.programnamemembershipprovider" />    </providers> </membership> <rolemanager defaultprovider="programnameroleprovider" cacherolesincookie="true" enabled="true" cookietimeout="120" createpersistentcookie="false">   <providers>     <add name="programnameroleprovider" type="programname.services.security.roleproviders.programnameroleprovider" connectionstringname="programnamedb" applicationname="/" />   </providers> </rolemanager> 

you have call membership.createuser method create new user. can put in validateuser method, or within login control's loggedin event. obviously, you'd want check first logged in user exists or not in database before calling createuser...

for more on loggedin event: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.login.loggedin.aspx


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -