Exemple #1
0
        public override IClaimsIdentity ProcessSignInResponse(string realm, string originalUrl, HttpContextBase httpContext)
        {
            var client = new MicrosoftClient(this.appId, this.secretKey);
            AuthenticationResult result;

            try
            {
                result = client.VerifyAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl);
            }
            catch (WebException wex)
            {
                throw new InvalidOperationException(new StreamReader(wex.Response.GetResponseStream()).ReadToEnd(), wex);
            }

            var claims = new List <Claim>
            {
                new Claim(System.IdentityModel.Claims.ClaimTypes.NameIdentifier, result.ExtraData["id"])
            };

            foreach (var claim in result.ExtraData)
            {
                claims.Add(new Claim("http://schemas.live.com/" + claim.Key, claim.Value));
            }

            return(new ClaimsIdentity(claims, "LiveId"));
        }
 public static void RegisterAuth()
 {
     if (OpenAuth.AuthenticationClients.GetByProviderName("microsoft") == null)
     {
         MicrosoftClient msClient = new MicrosoftClient("a8f83bd5-dd71-4f7b-a56b-295a5a1a0334", ".Xm4NgH873~rGMoMvCz.21pNsSEp0~.QnD");
         OpenAuth.AuthenticationClients.Add("microsoft", () => msClient);
     }
 }
        public MicrosoftOAuthClient(string clientId, string clientSecretId, string requestScopes)
        {
            Check.IsNotNull(clientId, "ClientId");
            Check.IsNotNull(clientSecretId, "ClientSecretId");

            if (requestScopes != null && requestScopes.Count() <= 0)
            {
                this.client = new MicrosoftClient(clientId, clientSecretId);
            }
            else
            {
                var scopes = requestScopes.Split(',');
                this.client = new MicrosoftClient(clientId, clientSecretId, scopes);
            }
        }
        private async void Microsoft_Click(object sender, RoutedEventArgs e)
        {
            viewModel.IsButtonAvailable = false;
            viewModel.IsLoading         = true;
            try
            {
                var token = new MicrosoftToken();
                await token.AcquireNewToken();

                var msClient = new MicrosoftClient(token);
                AppGlobalVariables.Users.Add(await msClient.GetUserDataAsync());
            }
            catch (Exception ex)
            {
                DebugHelper.Debugger.WriteErrorLog("Error in acquiring MS token on AuthDialog.", ex);
            }
            dialogHost.Hide();
        }
Exemple #5
0
        private async Task <List <Models.Common.EventBase> > GetMicrosoftEvents(DateTime datetime, Models.Auth.UserBase user)
        {
            var events   = new List <Models.Common.EventBase>();
            var msClient = new MicrosoftClient(user);

            if (user.Calendars.Count == 0)
            {
                var calendars = await msClient.GetCalendarList();

                var calCache = new CalendarCacheHelper();
                await calCache.Init();

                foreach (var calendar in calendars.value)
                {
                    calCache.CheckIfEnabled(calendar);
                }
                user.Calendars.AddRange(calendars.value);
            }

            if (user.Calendars.Count > 0)
            {
                foreach (var calendar in user.Calendars)
                {
                    if (calendar.IsEnabled)
                    {
                        try
                        {
                            var msevents = await msClient.GetEventList(calendar, datetime);

                            events.AddRange(msevents.value);
                        }
                        catch (Exception ex)
                        {
                            Debugger.WriteErrorLog("Error occured while retrieving Microsoft Events. User="******". Calendar=" + calendar.Name + ".", ex);
                            await new MessageDialog(ex.Message + ". User="******". Calendar=" + calendar.Name + ". Please consider excluding this calendar.", "Error occured while retrieving Microsoft Events.").ShowAsync();
                        }
                    }
                }
            }

            return(events);
        }
        public static async Task <UserBase> AcquireUserFromToken(TokenBase token)
        {
            try
            {
                switch (token.UserType)
                {
                case UserType.Google:
                    var googleClient = new GoogleClient(token);
                    return(await googleClient.GetUserDataAsync());

                case UserType.Microsoft:
                    var msClient = new MicrosoftClient(token);
                    return(await msClient.GetUserDataAsync());

                case UserType.NatureRemo:
                    var remoClient = new NatureRemoClient(token);
                    return(await remoClient.GetUserDataAsync());

                case UserType.Hue:
                    return(await HueAuthClient.FindHueBridge(token));

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                Debugger.WriteErrorLog("Exception occured on acquiring user info. Type=" + token.UserType.ToString(), ex);
                //var message = new MessageDialog("Type=" + token.UserType.ToString() + " Exception=" + ex.Message, "Exception occured on acquiring user info.");
                //await message.ShowAsync();
                var user = new UserBase();
                user.Token             = token;
                user.UserType          = token.UserType;
                user.UserName          = "******";
                user.ProfilePictureUrl = "/Assets/Square150x150Logo.scale-200.png";
                user.Id = token.Id;

                return(user);
            }
            return(null);
        }
Exemple #7
0
        public static ExtendedMicrosoftClientUserData GetExtraData(this MicrosoftClient client, string accessToken)
        {
            ExtendedMicrosoftClientUserData graph;
            var request =
                WebRequest.Create(
                    "https://apis.live.net/v5.0/me?access_token=" + EscapeUriDataStringRfc3986(accessToken));

            using (var response = request.GetResponse())
            {
                using (var responseStream = response.GetResponseStream())
                {
                    using (StreamReader sr = new StreamReader(responseStream))
                    {
                        string data = sr.ReadToEnd();

                        graph = JsonConvert.DeserializeObject <ExtendedMicrosoftClientUserData>(data);
                    }
                }
            }

            return(graph);
        }
Exemple #8
0
        public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
        {
            var client = new MicrosoftClient(this.appId, this.secretKey);

            client.RequestAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl);
        }
Exemple #9
0
        public ActionResult ExternalLoginCallback(string returnUrl)
        {
            string ProviderName = OpenAuth.GetProviderNameFromCurrentRequest();

            if (ProviderName == null || ProviderName == "")
            {
                NameValueCollection nvs = Request.QueryString;
                if (nvs.Count > 0)
                {
                    if (nvs["state"] != null)
                    {
                        NameValueCollection provideritem = HttpUtility.ParseQueryString(nvs["state"]);
                        if (provideritem["microsoft"] != null)
                        {
                            ProviderName = provideritem["microsoft"];
                        }
                    }
                }
            }

            var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }, this.Request.Url.Scheme);

            if (ProviderName == null)
            {
                ProviderName = "microsoft";
            }

            MicrosoftClient msClient   = OpenAuth.AuthenticationClients.GetByProviderName(ProviderName) as MicrosoftClient;
            var             authResult = msClient.VerifyAuthentication(new HttpContextWrapper(HttpContext.ApplicationInstance.Context), new Uri(redirectUrl));

            if (!authResult.IsSuccessful)
            {
                return(Redirect(Url.Action("Login", "Account")));
            }

            // User has logged in with provider successfully
            // Check if user is already registered locally
            if (OpenAuth.Login(authResult.Provider, authResult.ProviderUserId, createPersistentCookie: false))
            {
                return(Redirect(Url.Action("Index", "Home")));
            }
            //Get provider user details
            string ProviderUserId   = authResult.ProviderUserId;
            string ProviderUserName = authResult.UserName;
            string FirstName        = null;
            string LastName         = null;

            string Email = null;

            if (FirstName == null && authResult.ExtraData.ContainsKey("firstname"))
            {
                FirstName = authResult.ExtraData["firstname"];
            }
            if (LastName == null && authResult.ExtraData.ContainsKey("lastname"))
            {
                LastName = authResult.ExtraData["lastname"];
            }
            // call extension method to get email
            ExtendedMicrosoftClientUserData data = msClient.GetExtraData(authResult.ExtraData["accesstoken"]);

            Email = data.Emails.Preferred;

            if (User.Identity.IsAuthenticated)
            {
                // User is already authenticated, add the external login and redirect to return url
                OpenAuth.AddAccountToExistingUser(ProviderName, ProviderUserId, ProviderUserName, User.Identity.Name);
                return(Redirect(Url.Action("Index", "Home")));
            }
            else
            {
                // User is new, save email as username
                string membershipUserName = Email ?? ProviderUserId;
                var    createResult       = OpenAuth.CreateUser(ProviderName, ProviderUserId, ProviderUserName, membershipUserName);

                if (!createResult.IsSuccessful)
                {
                    ViewBag.Message = "User cannot be created";
                    return(View());
                }
                else
                {
                    // User created
                    if (OpenAuth.Login(ProviderName, ProviderUserId, createPersistentCookie: false))
                    {
                        return(Redirect(Url.Action("Index", "Home")));
                    }
                }
            }
            return(View());
        }