Beispiel #1
0
        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);
        }
Beispiel #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));
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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);
        }