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); }
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)); }
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); }