public override async Task <ExternalAuthUserInfo> GetUserInfo(string accessCode) { /* TODO: Microsoft login could not be tested because of a problem on Angular2 application. * see login.service.ts in Angular2 application. * This is not a problem for MVC application since it uses server side login. */ using (var client = new HttpClient()) { client.DefaultRequestHeaders.UserAgent.ParseAdd("Microsoft ASP.NET Core OAuth middleware"); client.DefaultRequestHeaders.Accept.ParseAdd("application/json"); client.Timeout = TimeSpan.FromSeconds(30); client.MaxResponseContentBufferSize = 1024 * 1024 * 10; // 10 MB var request = new HttpRequestMessage(HttpMethod.Get, MicrosoftAccountDefaults.UserInformationEndpoint); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessCode); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); var payload = JObject.Parse(await response.Content.ReadAsStringAsync()); return(new ExternalAuthUserInfo { Name = MicrosoftAccountHelper.GetDisplayName(payload), EmailAddress = MicrosoftAccountHelper.GetEmail(payload), Surname = MicrosoftAccountHelper.GetSurname(payload), Provider = Name, ProviderKey = MicrosoftAccountHelper.GetId(payload) }); } }
internal static Task OnCreatingTicket(OAuthCreatingTicketContext context) { if (context.Ticket.Principal != null) { Helpers.ThrowIfConditionFailed(() => context.AccessToken == "ValidAccessToken", "Access token is not valid"); Helpers.ThrowIfConditionFailed(() => context.RefreshToken == "ValidRefreshToken", "Refresh token is not valid"); Helpers.ThrowIfConditionFailed(() => MicrosoftAccountHelper.GetGivenName(context.User) == "AspnetvnextTest", "Given name is not valid"); Helpers.ThrowIfConditionFailed(() => MicrosoftAccountHelper.GetSurname(context.User) == "AspnetvnextTest", "Surname is not valid"); Helpers.ThrowIfConditionFailed(() => MicrosoftAccountHelper.GetId(context.User) == "fccf9a24999f4f4f", "Id is not valid"); Helpers.ThrowIfConditionFailed(() => MicrosoftAccountHelper.GetDisplayName(context.User) == "AspnetvnextTest AspnetvnextTest", "Name is not valid"); Helpers.ThrowIfConditionFailed(() => context.ExpiresIn.Value == TimeSpan.FromSeconds(3600), "ExpiresIn is not valid"); Helpers.ThrowIfConditionFailed(() => context.User != null, "User object is not valid"); Helpers.ThrowIfConditionFailed(() => MicrosoftAccountHelper.GetId(context.User) == context.User.SelectToken("id").ToString(), "User id is not valid"); context.Ticket.Principal.Identities.First().AddClaim(new Claim("ManageStore", "false")); } return(Task.FromResult(0)); }