コード例 #1
0
ファイル: iFolderUser.cs プロジェクト: RoDaniel/featurehouse
 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;
      }
     }
        }
 }
コード例 #2
0
 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;
 }
コード例 #3
0
ファイル: GaimDomain.cs プロジェクト: RoDaniel/featurehouse
 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;
 }