Beispiel #1
0
        public string login()
        {
            objUserData                   = new UserData();
            CommonAPI.LoginInfo           = objUserData;
            objUserData.uuid              = Guid.NewGuid().ToString();
            objUserData.WorkStationSerial = Tools.generateWorkStationGUID();

            SymmetricCryptography symmetricCryptography_0;            //加密器

            symmetricCryptography_0 = new SymmetricCryptography(SymmetricProvider.Rijndael);
            byte[] key = null;
            byte[] iV  = null;

            //系统默认是根据uuid 生成一个算法key的,或者简单理解为uuid就是加密和解密的密码
            CommonAPI.GenerateKey(objUserData.uuid, ref key, ref iV, SymmetricProvider.Rijndael);
            symmetricCryptography_0.Key = key;
            symmetricCryptography_0.IV  = iV;


            objUserData.UserId     = symmetricCryptography_0.EncryptString(m_strUser);         //demo
            objUserData.Password   = symmetricCryptography_0.EncryptString(m_strPassword);     //DEMO
            objUserData.AppServer  = m_strServer;
            objUserData.LanguageID = "zh-CN";
            objUserData.cSubID     = "DP";
            objUserData.operDate   = m_strDate;

            objUserData.DataSource = m_strDataSource;

            Debugger.Log(0, null, UserDataTools.userData2String(objUserData));
            var paras       = new CommonParameters();
            var loginHeader = new LoginedDataHead();

            loginHeader.ChangePwd          = false;
            loginHeader.KickOutWorkStation = false;
            loginHeader.NewPassword        = symmetricCryptography_0.EncryptString("");     //DEMO

            paras.Para1 = "TARGET\\ENTERPRISEPORTAL.EXE";
            paras.Para2 = true;
            paras.Para3 = loginHeader;

            try {
                credit.BFDispatch("Authenticate", objUserData, ref paras);

                if (!string.IsNullOrEmpty(paras.Para1))
                {
                    return(paras.Para1);
                }
            } catch (CustomError cEx) {
                //MessageBox.Show(cEx.Message);
                throw;
            } finally {
            }
        }
Beispiel #2
0
        /// <summary>認証Serviceのテスト(秘密鍵暗号化方式)</summary>
        private void button1_Click(object sender, EventArgs e)
        {
            // SessionステートフルなWebサービス
            ServiceForAuth sfa = new ServiceForAuth();

            sfa.CookieContainer = new CookieContainer();

            sfa.Proxy = GlobalProxySelection.GetEmptyWebProxy();
            //sfa.Proxy = WebProxy.GetDefaultProxy();
            //sfa.Proxy.Credentials = new NetworkCredential("20228749", "*****");

            // チャレンジ=秘密鍵
            string challenge = sfa.GetChallenge();

            // アカウントの暗号化
            string encUid = SymmetricCryptography.EncryptString(
                this.textBox1.Text, challenge, EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider);
            string encPwd = SymmetricCryptography.EncryptString(
                this.textBox2.Text, challenge, EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider);

            // 認証チケットを取得
            string authTicketBase64 = sfa.GetAuthTicket(encUid, encPwd);

            // 認証チケットを検証
            string[] authTicket = sfa.ValidateAuthTicket(authTicketBase64);

            MessageBox.Show(
                "uid\t: " + authTicket[0] + "\r\n"
                + "pwd\t: " + authTicket[1] + "\r\n"
                + "time\t: " + authTicket[2] + "\r\n", "認証チケット",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
Beispiel #3
0
        public string GetAuthTicket(string encUid, string encPwd)
        {
            try
            {
                // ユーザIDの復号化
                string uid = SymmetricCryptography.DecryptString(
                    encUid, (string)Session["challenge"], EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider);
                // パスワードの復号化
                string pwd = SymmetricCryptography.DecryptString(
                    encPwd, (string)Session["challenge"], EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider);

                // 認証する。
                bool isAuthenticated = false;

                #region 認証処理のUOC

                // ★★ コンテキストの情報を使用するなどして
                //       認証処理をUOCする(必要に応じて)。

                //// B層・D層呼出し
                ////   認証チェックとタイムスタンプの更新
                //MyUserInfo userInfo =new MyUserInfo(
                //    "未認証:" + uid, HttpContext.Current.Request.UserHostAddress);

                //BaseReturnValue returnValue = (BaseReturnValue)Latebind.InvokeMethod(
                //    "xxxx", "yyyy",
                //    FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME,
                //    new object[] {
                //        new AuthParameterValue("-", "-", "zzzz", "",userInfo, pwd),
                //        DbEnum.IsolationLevelEnum.User });

                //// 認証されたか・されなかったか
                //isAuthenticated = !returnValue.ErrorFlag;

                isAuthenticated = true;

                #endregion

                if (isAuthenticated)
                {
                    // 認証チケットを作成して暗号化する(DateTime.Nowにより可変に)。
                    string[] authTicket = { uid, pwd, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") };

                    return(SymmetricCryptography.EncryptString(
                               CustomEncode.ToBase64String(
                                   BinarySerialize.ObjectToBytes(authTicket)),
                               GetConfigParameter.GetConfigValue("private-key"),
                               EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider));
                }
                else
                {
                    // 認証失敗
                    return(string.Empty);
                }
            }
            catch
            {
                // 認証失敗
                return(string.Empty);
            }
            finally
            {
                // セッションの解放
                Session.Abandon();
            }
        }
Beispiel #4
0
 /// <summary>秘密鍵・暗号化</summary>
 private void button1_Click(object sender, EventArgs e)
 {
     if (string.IsNullOrEmpty(txtSCSalt.Text))
     {
         // ソルト無し
         if (this.rbnSCString.Checked)
         {
             // String
             this.txtSCCode.Text =
                 SymmetricCryptography.EncryptString(
                     this.txtSCString.Text,
                     this.txtSCPassword.Text,
                     (EnumSymmetricAlgorithm)cbxSCPV.SelectedValue);
         }
         else
         {
             // Bytes
             this.txtSCCode.Text =
                 CustomEncode.ToHexString(
                     SymmetricCryptography.EncryptBytes(
                         CustomEncode.StringToByte(txtSCString.Text, CustomEncode.UTF_8),
                         this.txtSCPassword.Text,
                         (EnumSymmetricAlgorithm)cbxSCPV.SelectedValue));
         }
     }
     else
     {
         // ソルト有り
         if (this.nudSCStretching.Value == 0)
         {
             // ストレッチング無し
             if (this.rbnSCString.Checked)
             {
                 // String
                 this.txtSCCode.Text =
                     SymmetricCryptography.EncryptString(
                         this.txtSCString.Text,
                         this.txtSCPassword.Text,
                         (EnumSymmetricAlgorithm)cbxSCPV.SelectedValue,
                         CustomEncode.StringToByte(txtSCSalt.Text, CustomEncode.UTF_8));
             }
             else
             {
                 // Bytes
                 this.txtSCCode.Text =
                     CustomEncode.ToHexString(
                         SymmetricCryptography.EncryptBytes(
                             CustomEncode.StringToByte(txtSCString.Text, CustomEncode.UTF_8),
                             this.txtSCPassword.Text,
                             (EnumSymmetricAlgorithm)cbxSCPV.SelectedValue,
                             CustomEncode.StringToByte(txtSCSalt.Text, CustomEncode.UTF_8)));
             }
         }
         else
         {
             // ストレッチング有り
             if (this.rbnSCString.Checked)
             {
                 // String
                 this.txtSCCode.Text
                     = SymmetricCryptography.EncryptString(
                           this.txtSCString.Text,
                           this.txtSCPassword.Text,
                           (EnumSymmetricAlgorithm)cbxSCPV.SelectedValue,
                           CustomEncode.StringToByte(txtSCSalt.Text, CustomEncode.UTF_8),
                           (int)this.nudSCStretching.Value);
             }
             else
             {
                 // Bytes
                 this.txtSCCode.Text =
                     CustomEncode.ToHexString(
                         SymmetricCryptography.EncryptBytes(
                             CustomEncode.StringToByte(txtSCString.Text, CustomEncode.UTF_8),
                             this.txtSCPassword.Text,
                             (EnumSymmetricAlgorithm)cbxSCPV.SelectedValue,
                             CustomEncode.StringToByte(txtSCSalt.Text, CustomEncode.UTF_8),
                             (int)this.nudSCStretching.Value));
             }
         }
     }
 }