コード例 #1
0
            protected override void SaveSharePointContext(CustomSharePointContext spContext, ISessionContext context)
            {
                if (null == spContext)
                {
                    return;
                }
                if (null == context)
                {
                    throw new ArgumentNullException(nameof(context));
                }
                // Update the session store with parameters.
                var spHTContext = (CustomSharePointContext.CustomSharePointHighTrustContext)spContext;

                if (null != spHTContext.SPHostUrl)
                {
                    context.SetParam(Constants.SPHostUrlKey, spHTContext.SPHostUrl?.ToString());
                }
                if (null != spHTContext.SPAppWebUrl)
                {
                    context.SetParam(Constants.SPAppWebUrlKey, spHTContext.SPAppWebUrl.ToString());
                }

                context.SetParam(Constants.SPClientTagKey, spHTContext.SPClientTag);
                context.SetParam(Constants.SPLanguageKey, spHTContext.SPLanguage);
                context.SetParam(Constants.SPProductNumberKey, spHTContext.SPProductNumber);
            }
コード例 #2
0
        private static Uri GetAppRedirectUrl(ISessionContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException(nameof(context));
            }
            // Make sure we don't redirect over and over again.
            const string SPHasRedirectedToSharePointKey = "SPHasRedirectedToSharePoint";

            if (!string.IsNullOrEmpty(context.GetParam <string>(SPHasRedirectedToSharePointKey)))
            {
                return(null);
            }
            var spHostUrl = CustomSharePointContext.GetSPHostUrl(context);

            if (null == spHostUrl)
            {
                return(null);
            }
            var requestUrl = context.GetRequestUrl;

            if (null == requestUrl)
            {
                return(null);
            }
            var queryNameValueCollection = HttpUtility.ParseQueryString(requestUrl.Query);

            // Removes the values that are included in {StandardTokens}, as {StandardTokens}
            // will be inserted at the beginning of the query string.
            queryNameValueCollection.Remove(Constants.SPHostUrlKey);
            queryNameValueCollection.Remove(Constants.SPAppWebUrlKey);
            queryNameValueCollection.Remove(Constants.SPLanguageKey);
            queryNameValueCollection.Remove(Constants.SPClientTagKey);
            queryNameValueCollection.Remove(Constants.SPProductNumberKey);
            // Adds SPHasRedirectedToSharePoint=1.
            queryNameValueCollection.Add(SPHasRedirectedToSharePointKey, "1");
            var returnUrlBuilder = new UriBuilder(requestUrl)
            {
                Query = queryNameValueCollection.ToString()
            };
            // Inserts StandardTokens.
            const string StandardTokens  = "{StandardTokens}";
            var          returnUrlString = returnUrlBuilder.Uri.AbsoluteUri;

            returnUrlString = returnUrlString.Insert(returnUrlString.IndexOf("?", StringComparison.Ordinal) + 1, StandardTokens + "&");
            var redirectUrlString = TokenHelper.GetAppContextTokenRequestUrl(spHostUrl.AbsoluteUri, Uri.EscapeDataString(returnUrlString));

            return(new Uri(redirectUrlString, UriKind.Absolute));
        }
コード例 #3
0
            protected override bool ValidateSharePointContext(
                CustomSharePointContext spContext, ISessionContext context)
            {
                if (null == context)
                {
                    throw new ArgumentNullException(nameof(context));
                }
                if (!(spContext is CustomSharePointContext.CustomSharePointAcsContext spAcsContext))
                {
                    return(false);
                }
                var spHostUrl       = CustomSharePointContext.GetSPHostUrl(context);
                var spContextString = GetContextString(context);

                return(spHostUrl == spAcsContext.SPHostUrl &&
                       !string.IsNullOrEmpty(spAcsContext.ContextToken) &&
                       (string.IsNullOrEmpty(spContextString) || spContextString == spAcsContext.ContextToken));
            }
コード例 #4
0
            protected override bool ValidateSharePointContext(
                CustomSharePointContext spContext, ISessionContext context)
            {
                if (null == context)
                {
                    throw new ArgumentNullException(nameof(context));
                }
                if (!(spContext is CustomSharePointContext.CustomSharePointHighTrustContext spHighTrustContext))
                {
                    return(false);
                }
                var spHostUrl         = CustomSharePointContext.GetSPHostUrl(context);
                var logonUserIdentity = context.GetLogonUser;

                return(spHostUrl == spHighTrustContext.SPHostUrl &&
                       logonUserIdentity != null &&
                       logonUserIdentity.IsAuthenticated &&
                       !logonUserIdentity.IsGuest &&
                       logonUserIdentity.User == spHighTrustContext.LogonUserIdentity.User);
            }
コード例 #5
0
        public CustomSharePointContext CreateSharePointContext(ISessionContext context)
        {
            if (null == context)
            {
                throw new ArgumentNullException(nameof(context));
            }
            var spHostUrl = CustomSharePointContext.GetSPHostUrl(context);

            if (null == spHostUrl)
            {
                return(null);
            }
            var spLanguage = context.GetParam <string>(Constants.SPLanguageKey);

            if (string.IsNullOrEmpty(spLanguage))
            {
                return(null);
            }
            var spClientTag = context.GetParam <string>(Constants.SPClientTagKey);

            if (string.IsNullOrEmpty(spClientTag))
            {
                return(null);
            }
            var spProductNumber = context.GetParam <string>(Constants.SPProductNumberKey);

            if (string.IsNullOrEmpty(spProductNumber))
            {
                return(null);
            }
            var spAppWebUrlString = TokenHelper.EnsureTrailingSlash(context.GetParam <string>(Constants.SPAppWebUrlKey));

            if (!Uri.TryCreate(spAppWebUrlString, UriKind.Absolute, out var spAppWebUrl) ||
                !(spAppWebUrl.Scheme == Uri.UriSchemeHttp || spAppWebUrl.Scheme == Uri.UriSchemeHttps))
            {
                spAppWebUrl = null;
            }
            return(CreateSharePointContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, context));
        }
コード例 #6
0
 protected abstract void SaveSharePointContext(CustomSharePointContext spContext, ISessionContext context);
コード例 #7
0
 protected abstract bool ValidateSharePointContext(
     CustomSharePointContext spContext, ISessionContext context);