Example #1
0
        private static void AuthenticateUser()
        {
            sessionState.RemoteWebUrl  = request.Url.Authority;
            sessionState.HostWebUrl    = request["SPHostUrl"];
            sessionState.HostWebDomain = (new Uri(sessionState.HostWebUrl)).Authority;
            sessionState.HostWebTitle  = request.Form["SPSiteTitle"];

            // get windows authenticated user name
            sessionState.CurrentUserAccountName = HttpContext.Current.User.Identity.Name;

            // get access token to make RESt call
            var    spContext   = SharePointContextProvider.Current.GetSharePointContext(HttpContext.Current);
            string accessToken = spContext.UserAccessTokenForSPHost;

            // call SharePoint REST API to get information about current user
            string restUri         = sessionState.HostWebUrl + "/_api/web/currentUser/";
            string jsonCurrentUser = ExecuteGetRequest(restUri, accessToken);

            // convert json result to strongly-typed C# object
            SharePointUserResult userResult = JsonConvert.DeserializeObject <SharePointUserResult>(jsonCurrentUser);

            sessionState.CurrentUserDisplayName = userResult.d.Title;
            sessionState.CurrentUserEmail       = userResult.d.Email;

            // write session state out to ASP.NET session object
            session["SharePointSessionState"] = sessionState;

            // update UserIsAuthenticated session variable
            session["UserIsAuthenticated"] = "true";
        }
        private static void AuthenticateUser()
        {
            sessionState.RemoteWebUrl  = request.Url.Authority;
            sessionState.HostWebUrl    = request["SPHostUrl"];
            sessionState.HostWebDomain = (new Uri(sessionState.HostWebUrl)).Authority;
            sessionState.HostWebTitle  = request.Form["SPSiteTitle"];
            string contextTokenString = request.Form["SPAppToken"];

            // create SharePoint context token object
            SharePointContextToken contextToken =
                TokenHelper.ReadAndValidateContextToken(contextTokenString, sessionState.RemoteWebUrl);

            // read session state from SharePoint context token object
            sessionState.HostTenantId        = contextToken.Realm;
            sessionState.TargetResource      = contextToken.Audience;
            sessionState.RefreshToken        = contextToken.RefreshToken;
            sessionState.RefreshTokenExpires = contextToken.ValidTo;

            // use refresh token to acquire access token response from Azure ACS
            OAuth2AccessTokenResponse AccessTokenResponse =
                TokenHelper.GetAccessToken(contextToken, sessionState.HostWebDomain);

            // Read access token and ExpiresOn value from access token response
            sessionState.AccessToken        = AccessTokenResponse.AccessToken;
            sessionState.AccessTokenExpires = AccessTokenResponse.ExpiresOn;

            // call SharePoint REST API to get information about current user
            string restUri         = sessionState.HostWebUrl + "/_api/web/currentUser/";
            string jsonCurrentUser = ExecuteGetRequest(restUri, sessionState.AccessToken);

            // convert json result to strongly-typed C# object
            SharePointUserResult userResult = JsonConvert.DeserializeObject <SharePointUserResult>(jsonCurrentUser);

            sessionState.CurrentUserName  = userResult.Title;
            sessionState.CurrentUserEmail = userResult.Email;

            // write session state out to ASP.NET session object
            session["SharePointSessionState"] = sessionState;

            // update UserIsAuthenticated session variable
            session["UserIsAuthenticated"] = "true";
        }