public iFolderUser( Simias.Storage.Domain domain, Simias.Storage.Member member ) { this.Name = member.Name; this.UserID = member.UserID; this.ID = member.ID; this.State = "Member"; this.IsOwner = member.IsOwner; this.Rights = member.Rights.ToString(); if ( member.Given != null ) { this.Surname = member.Family; this.FirstName = member.Given; this.FN = member.FN; } else { if ( domain != null ) { Simias.Storage.Member dMember = domain.GetMemberByID( member.UserID ); if ( dMember != null ) { this.Surname = dMember.Family; this.FirstName = dMember.Given; this.FN = dMember.FN; } } } }
public Authentication.Status Authenticate( Simias.Storage.Domain domain, HttpContext ctx ) { string gaimSessionTag = "gaim"; Simias.Storage.Member member = null; Simias.Authentication.Status status = new Simias.Authentication.Status( SCodes.InvalidCredentials ); if ( ctx.Session != null ) { GaimSession gaimSession; string memberID = ctx.Request.Headers[ "gaim-member" ]; if ( memberID == null || memberID == "" ) { return status; } member = domain.GetMemberByID( memberID ); if ( member == null ) { return status; } status.UserName = member.Name; status.UserID = member.UserID; gaimSession = ctx.Session[ gaimSessionTag ] as GaimSession; if ( gaimSession == null ) { gaimSession = new GaimSession(); gaimSession.MemberID = member.UserID; gaimSession.State = 1; gaimSession.OneTimePassword = DateTime.UtcNow.Ticks.ToString(); GaimBuddy buddy = GaimDomain.GetBuddyByUserID( member.UserID ); if (buddy != null) { RSACryptoServiceProvider credential = buddy.GetCredentialByUserID( member.UserID ); if ( credential != null ) { byte[] oneTime = new UTF8Encoding().GetBytes( gaimSession.OneTimePassword ); byte[] encryptedText = credential.Encrypt( oneTime, false ); ctx.Response.AddHeader( "gaim-secret", Convert.ToBase64String( encryptedText ) ); ctx.Session[ gaimSessionTag ] = gaimSession; } } } else if ( status.UserID == gaimSession.MemberID ) { string encodedSecret = ctx.Request.Headers[ "gaim-secret" ]; if ( encodedSecret != null && encodedSecret != "" ) { UTF8Encoding utf8 = new UTF8Encoding(); string decodedString = utf8.GetString( Convert.FromBase64String( encodedSecret ) ); if ( decodedString.Equals( gaimSession.OneTimePassword ) == true ) { status.statusCode = SCodes.Success; gaimSession.State = 2; } } else { gaimSession.OneTimePassword = DateTime.UtcNow.Ticks.ToString(); gaimSession.State = 1; GaimBuddy buddy = GaimDomain.GetBuddyByUserID( member.UserID ); if (buddy != null) { RSACryptoServiceProvider credential = buddy.GetCredentialByUserID( member.UserID ); if ( credential != null ) { try { byte[] oneTime = new UTF8Encoding().GetBytes( gaimSession.OneTimePassword ); byte[] encryptedText = credential.Encrypt( oneTime, false ); ctx.Response.AddHeader( "gaim-secret", Convert.ToBase64String( encryptedText ) ); } catch( Exception encr ) { log.Debug( encr.Message ); log.Debug( encr.StackTrace ); } } } } } } return status; }
internal static Member FindBuddyInDomain(Simias.Storage.Domain domain, GaimBuddy buddy, string machineName) { Member member = null; string simiasUserID = buddy.GetSimiasUserID(machineName); if (simiasUserID != null) { member = domain.GetMemberByID(simiasUserID); } return member; }