public void GenerateAppId() { var appId = AppInfoHelper.GenerateAppId(AppInfoHelper.SystemDefaultTenantId, AppType.System, AppClientType.Server); var appinfo = new AppIdentity() { app_id = appId }; AppInfoHelper.FormatAppIdInfo(appinfo); Assert.IsTrue(appinfo.app_type == AppType.System); }
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> CheckAppAuthIdentity(HttpContext context, IAppAuthProvider provider, AppIdentity appInfo) { var secretKeyRes = await provider.IntialAuthAppConfig(context, appInfo); if (!secretKeyRes.IsSuccess()) { return(secretKeyRes); } const int expireSecs = 60 * 60 * 2; if (!appInfo.CheckSign(secretKeyRes.data.AppSecret, expireSecs).IsSuccess() || !AppInfoHelper.FormatAppIdInfo(appInfo)) { return(new Resp(RespTypes.SignError, "签名错误!")); } return(secretKeyRes); }
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); }
private static void InitialTestContext() { var appIdentity = new AppIdentity() { tenant_id = AppInfoHelper.SystemDefaultTenantId, app_id = AppInfoHelper.AppId, UDID = "TestDevice", }; AppInfoHelper.FormatAppIdInfo(appIdentity); var userIdentity = new UserIdentity() { id = userId, auth_type = PortalAuthorizeType.Admin }; AppReqContext.SetIdentity(appIdentity); UserContext.SetIdentity(userIdentity); }