Exemplo n.º 1
0
        /// <summary>
        /// URL生成
        /// </summary>
        /// <remarks>
        /// <para>この関数は、validationUrl + "?targeturl=" + targetUrl + "&amp;ticket=" + key の形式のURL文字列を生成します。</para>
        /// <para>keyは暗号化され、QueryStringとして付与されます。</para>
        /// </remarks>
        /// <param name="validationUrl">検証先URL</param>
        /// <param name="targetUrl">遷移先URL</param>
        /// <param name="key">キー</param>
        /// <returns>認証キーを含むリダイレクト先URL</returns>
        public string GenerateURL(string validationUrl, string targetUrl, string key)
        {
            //	メソッド開始を記録します。
            PCSiteTraceSource.MethodStart(validationUrl, targetUrl, key);

            // 検証先ページURLのチェック(null、空白チェック)
            if (string.IsNullOrEmpty(validationUrl))
            {
                throw new ArgumentNullException("validationUrl");
            }
            // 遷移先ページ識別子のチェック(null、空白チェック)
            if (string.IsNullOrEmpty(targetUrl))
            {
                throw new ArgumentNullException("targetUrl");
            }
            // キー値のチェック(null、空白チェック)
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException("key");
            }

            try
            {
                string returnURL = "";

                PCSiteTraceSource.CheckPoint("GenerateURLメソッドチェック(ターゲットURL):" + targetUrl);

                //	SingleSignOnTicketクラスのGentrateメソッド呼び出し
                string encriptTicket = SingleSignOnAuthKey.Generate(key);

                PCSiteTraceSource.CheckPoint("GenerateURLメソッドチェック(暗号化チケット):" + encriptTicket);

                // 認証キーを含むリダイレクト先URL作成
                StringBuilder sb = new StringBuilder();
                sb.Append(validationUrl);
                sb.Append("?targeturl=");

                // targetの値をURLエンコードします。
                sb.Append(System.Web.HttpUtility.UrlEncode(targetUrl));
                sb.Append("&ticket=");

                //	 ase64でエンコードした時に「+、/」が入るためURLエンコードします。
                sb.Append(System.Web.HttpUtility.UrlEncode(encriptTicket));
                returnURL = sb.ToString();

                PCSiteTraceSource.CheckPoint("GenerateURLメソッドチェック(ReturnUrl):" + returnURL);

                //	メソッド正常終了を記録します。
                PCSiteTraceSource.MethodSuccess();
                return(returnURL);
            }
            catch (Exception ex)
            {
                //	アプリケーションエラーをトレースします。
                PCSiteTraceSource.AppError("SingleSignOn.GenerateURLを呼び出した際のException", validationUrl, targetUrl, key, ex);
                throw new ApplicationException(ex.Message, ex);
            }
        }
Exemplo n.º 2
0
        protected void Application_BeginRequest(Object sender, EventArgs e)
        {
            TraceSources.AddAdditionalLogItem("RequsetId", Guid.NewGuid());
            string AccessURI = HttpContext.Current.Request.Url.PathAndQuery;

            PCSiteTraceSource.CheckPoint("リクエストを受信しました。AccessURI: " + AccessURI);

            var context  = HttpContext.Current;
            var security = new ApiSecurity();

            if (!security.XidXpassFilter(context))
            {
                context.Response.StatusCode = 404;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        ///	認証キー検証
        /// </summary>
        /// <param name="authenticationKey">認証キー</param>
        /// <returns>キー値</returns>
        public string Validate(string authenticationKey)
        {
            //	認証キーのチェック(null、空白チェック)
            if (authenticationKey == null || authenticationKey == "")
            {
                throw new ArgumentNullException("authenticationKey");
            }

            //	メソッド開始を記録します。
            PCSiteTraceSource.MethodStart(authenticationKey);

            try
            {
                string key;

                //	復号化メソッド呼び出し後、キー情報の取り出し
                string[] condition = SingleSignOn.DecryptString(authenticationKey).Split(",".ToCharArray());

                PCSiteTraceSource.CheckPoint("Validateメソッドチェック(キー):" + condition[0]);
                PCSiteTraceSource.CheckPoint("Validateメソッドチェック(チケット作成時間):" + condition[1]);
                PCSiteTraceSource.CheckPoint("Validateメソッドチェック(チケット有効期限):" + condition[2]);

                //	認証キー作成時間を取得
                DateTime dt = Convert.ToDateTime(condition[1]);

                //	有効期限チェック:システム日付<認証キー作成時+ 有効期限(秒)
                if (DateTime.Now < dt.AddSeconds(Convert.ToDouble(condition[2])))
                {
                    key = condition[0];
                }
                else
                {
                    key = null;
                }

                PCSiteTraceSource.CheckPoint("Validateメソッドチェック(return値):" + key);

                //	メソッド正常終了を記録します。
                PCSiteTraceSource.MethodSuccess();
                return(key);
            }
            catch (Exception ex)
            {
                //	アプリケーションエラーをトレースします。
                PCSiteTraceSource.AppError("SingleSignOnTicket.Validateを呼び出した際のException", authenticationKey, ex);
                throw new ApplicationException(ex.Message, ex);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// UseCheckBxCookie 関数
        /// </summary>
        /// <param name="UCheckFlg">保持フラグ</param>
        /// <param name="userid">ユーザーID</param>
        public static void UseCheckBxCookie(bool UCheckFlg, string userid)
        {
            PCSiteTraceSource.MethodStart();

            // ユーザーIDの保持チェックボックスをCookieに反映
            HttpCookie kie;

            PCSiteTraceSource.CheckPoint("UCheckFlg", UCheckFlg.ToString());
            try
            {
                if (UCheckFlg)
                {
                    // チェックフラグ
                    kie         = new HttpCookie("ckUSEFLG");
                    kie.Value   = "true";
                    kie.Expires = DateTime.Now.Add(new System.TimeSpan(365, 0, 0, 0));
                    HttpContext.Current.Response.Cookies.Add(kie);

                    PCSiteTraceSource.CheckPoint("CookiesAdd", "ckUSEFLG");

                    // ユーザーID
                    kie         = new HttpCookie("ckTCONNECTID");
                    kie.Value   = userid;
                    kie.Expires = DateTime.Now.Add(new System.TimeSpan(365, 0, 0, 0));
                    HttpContext.Current.Response.Cookies.Add(kie);

                    PCSiteTraceSource.CheckPoint("CookiesAdd", "ckTCONNECTID");
                }
                else
                {
                    kie         = new HttpCookie("ckUSEFLG");
                    kie.Value   = "";
                    kie.Expires = DateTime.Now.Add(new System.TimeSpan(-1, 0, 0, 0));
                    HttpContext.Current.Response.Cookies.Add(kie);

                    PCSiteTraceSource.CheckPoint("CookiesRemove", "ckUSEFLG");
                }
            }
            catch (Exception ex)
            {
                PCSiteTraceSource.MethodFailure(ex.Message);
            }
            PCSiteTraceSource.MethodSuccess();
        }
Exemplo n.º 5
0
        /// <summary>
        /// 認証処理を実施します。
        /// </summary>
        /// <param name="id">入力されたログインId</param>
        /// <param name="password">入力されたパスワード</param>
        /// <returns>認証結果</returns>
        public AuthResult Auth(string id, string password)
        {
            PCSiteTraceSource.MethodStart();
            var auth = new Toyota.Gbook.WebSite.Security.Control.Authentication();

            try
            {
                var apiResult = auth.GetOneIdAuthResult(id, password);
                return(AuthResult.From(apiResult));
            }
            catch (UnauthorizedException)
            {
                PCSiteTraceSource.CheckPoint("認証APIがHTTPステータス401を返却");
                return(AuthResult.Unauthorize());
            }
            catch (NoRelationException)
            {
                PCSiteTraceSource.CheckPoint("対象のIDに紐づいたT-ConnectIDなし");
                return(AuthResult.NoRelation());
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// GetRoles 関数
        /// </summary>
        /// <returns>
        ///   <dl>
        ///     <dt>ロール文字</dt>
        ///     <dd>戻り値 車載機モデルのロール文字列
        ///     </dd>
        ///   </dl>
        /// </returns>
        private static string GetRoles()
        {
            PCSiteTraceSource.MethodStart();

            string ret = "";

            try
            {
                var dataset = HttpContext.Current.Session["Toyota.Gbook.WebSite.UserDataSet"] as
                              Toyota.Gbook.WebSite.Security.DataTransferObject.ResultCDAuthenticationUserDataSet;
                if (dataset != null)
                {
                    if (dataset.CarInformation.First().IsTConnectNavi&&
                        HttpContext.Current.Session["Toyota.Gbook.WebSite.IsTerminatedUser"] != null)
                    {
                        if ((bool)HttpContext.Current.Session["Toyota.Gbook.WebSite.IsTerminatedUser"])
                        {
                            ret = Constants.ROLE.ROLE_TCONNECT_EXIT;
                            return(ret);
                        }
                        else
                        {
                            ret = Constants.ROLE.ROLE_TCONNECT;
                            return(ret);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                PCSiteTraceSource.MethodFailure(ex.Message);
            }

            PCSiteTraceSource.CheckPoint("return", ret);
            PCSiteTraceSource.MethodSuccess();
            return(ret);
        }
Exemplo n.º 7
0
        /// <summary>
        /// TicketCookieCreate 関数
        /// </summary>
        public static void TicketCookieCreate()
        {
            PCSiteTraceSource.MethodStart();

            // 認証チケットの発行
            try
            {
                // ユーザーのロール文字設定
                string roles = GetRoles();
                PCSiteTraceSource.CheckPoint("roles", roles);

                // チケット作成
                FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
                    1,
                    HttpContext.Current.Session[Constants.PCSiteNameSpace + ".InternalMemberId"].ToString(),
                    DateTime.Now,
                    DateTime.Now.AddMinutes(Convert.ToDouble(Config.Item[Constants.PCSiteNameSpace + ".FormsAuthentication.TicketTime"].ToString())),
                    false,
                    roles);

                // チケットのCookie暗号化
                string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
                PCSiteTraceSource.CheckPoint("encryptedTicket", encryptedTicket);

                // チケットのCookie生成
                HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
                authCookie.Path = FormsAuthentication.FormsCookiePath;
                HttpContext.Current.Response.Cookies.Add(authCookie);

                PCSiteTraceSource.CheckPoint("CookiesAdd", FormsAuthentication.FormsCookieName, encryptedTicket, FormsAuthentication.FormsCookiePath);
            }
            catch (Exception ex)
            {
                PCSiteTraceSource.MethodFailure(ex.Message);
            }
            PCSiteTraceSource.MethodSuccess();
        }
Exemplo n.º 8
0
        protected void Application_EndRequest(Object sender, EventArgs e)
        {
            string AccessURI = HttpContext.Current.Request.Url.PathAndQuery;

            PCSiteTraceSource.CheckPoint("レスポンスを送出しました。AccessURI: " + AccessURI);
        }