示例#1
0
        public static async Task <Resp> FormatAndCheck(HttpContext context, AppIdentity appInfo, AppAuthOption appOption)
        {
            // 第三方回调接口,直接放过
            if (appInfo.is_partner)
            {
                appInfo.is_partner = true;
                appInfo.app_client = AppClientType.Server;
                appInfo.app_type   = AppType.Outer;
                appInfo.UDID       = "WEB";

                return(new Resp());
            }

            Resp res;

            if (appOption.IsWebSite)
            {
                appInfo.app_ver = AppInfoHelper.AppVersion;
                appInfo.app_id  = AppInfoHelper.AppId;
                appInfo.UDID    = "WEB";

                appInfo.token = context.Request.Cookies[CookieKeys.UserCookieName];
                res           = new Resp();
            }
            else
            {
                string authTicketStr = context.Request.Headers[CookieKeys.AuthorizeTicketName];
                appInfo.FromTicket(authTicketStr);
                res = await CheckAppAuthIdentity(context, appOption.AppProvider, appInfo);
            }

            context.CompleteAppIdentity(appInfo);
            return(res);
        }
示例#2
0
        public static Resp CheckAppSign(AppIdentity appInfo, HttpContext context)
        {
            var authTicketStr = context.Request.Headers[ServerSignModeHeaderName];

            appInfo.FromTicket(authTicketStr);
            if (!AppInfoHelper.FormatAppIdInfo(appInfo))
            {
                return(new Resp(RespTypes.OperateFailed, "未知应用来源!"));
            }


            var key = ConfigHelper.GetSection("KnockAppSecrets:" + appInfo.app_id)?.Value;

            const int expireSecs = 60 * 60 * 2;

            return(appInfo.CheckSign(key, expireSecs));
        }
示例#3
0
        private static async Task <Resp> FormatAndCheck(HttpContext context, AppIdentity appInfo, AppAuthOption appOption)
        {
            switch (appInfo.SourceMode)
            {
            // 第三方回调接口,直接放过
            case AppSourceMode.PartnerServer:
                if (string.IsNullOrEmpty(appInfo.app_id))
                {
                    return(new Resp(SysRespTypes.AppConfigError, "未指定PartnerName(请使用AppPartnerNameAttribute指定)"));
                }
                appInfo.app_client = AppClientType.Server;
                appInfo.app_type   = AppType.Outer;
                appInfo.UDID       = "WEB";
                break;

            case AppSourceMode.ServerSign:
                string authTicketStr = context.Request.Headers[AppWebInfoHelper.ServerSignModeHeaderName];
                appInfo.FromTicket(authTicketStr);
                if (!AppInfoHelper.FormatAppIdInfo(appInfo))
                {
                    return(new Resp(RespTypes.UnKnowSource, "未知应用来源!"));
                }
                //if (appOption?.AppProvider == null)
                //{
                //    return new Resp(RespTypes.InnerError, "服务接口并未启用服务端应用校验,请求拒绝!");
                //}
                //res = await ServerAppCheck(context, appOption.AppProvider, appInfo);
                break;

            default:
                appInfo.app_id  = AppInfoHelper.AppId;
                appInfo.app_ver = AppInfoHelper.AppVersion;
                appInfo.app_id  = AppInfoHelper.AppId;
                appInfo.UDID    = "WEB";
                break;
            }

            var res = (await appOption?.AppProvider?.AppAuthCheck(context, appInfo)) ?? new Resp();

            context.CompleteAppIdentity(appInfo);
            return(res);
        }