From 2eaa8b584b8f12acd9358db2dbeaa92b6256c201 Mon Sep 17 00:00:00 2001 From: Senorsen Date: Mon, 2 Oct 2017 02:11:24 +0800 Subject: [PATCH] Remove other OAuth providers --- Wukong/Options/OAuthProviderOptions.cs | 118 +++---------------------- Wukong/Startup.cs | 4 +- 2 files changed, 11 insertions(+), 111 deletions(-) diff --git a/Wukong/Options/OAuthProviderOptions.cs b/Wukong/Options/OAuthProviderOptions.cs index 580fd2f..e66bdfa 100644 --- a/Wukong/Options/OAuthProviderOptions.cs +++ b/Wukong/Options/OAuthProviderOptions.cs @@ -47,14 +47,19 @@ public static GoogleOptions GoogleOAuthOptions(Secret secret) { Query = null }; - avatar = QueryHelpers.AddQueryString(avatarUriBuilder.ToString(), new Dictionary { { "sz", "200" } }); - + avatar = QueryHelpers.AddQueryString(avatarUriBuilder.ToString(), + new Dictionary {{"sz", "200"}}); + // TODO(Leeleo3x): Use all custom claim types or extend existing claim types. - context.Identity.AddClaim(new Claim(User.AvatarKey, avatar, ClaimValueTypes.String, context.Options.ClaimsIssuer)); + context.Identity.AddClaim(new Claim(User.AvatarKey, avatar, ClaimValueTypes.String, + context.Options.ClaimsIssuer)); } - context.Identity.AddClaim(new Claim(ClaimTypes.Authentication, "true", ClaimValueTypes.Boolean, context.Options.ClaimsIssuer)); - context.Identity.AddClaim(new Claim(ClaimTypes.AuthenticationMethod, context.Options.AuthenticationScheme, ClaimValueTypes.String, context.Options.ClaimsIssuer)); + context.Identity.AddClaim(new Claim(ClaimTypes.Authentication, "true", ClaimValueTypes.Boolean, + context.Options.ClaimsIssuer)); + context.Identity.AddClaim(new Claim(ClaimTypes.AuthenticationMethod, + context.Options.AuthenticationScheme, ClaimValueTypes.String, + context.Options.ClaimsIssuer)); return Task.FromResult(0); }, @@ -62,108 +67,5 @@ public static GoogleOptions GoogleOAuthOptions(Secret secret) }; } - - public static OAuthOptions GitHubOAuthOptions(Secret secret) - { - return new OAuthOptions - { - AuthenticationScheme = "GitHub", - DisplayName = "GitHub", - ClientId = secret.ClientId, - ClientSecret = secret.ClientSecret, - CallbackPath = "/oauth-redirect/github", - Scope = { "user:email" }, - SignInScheme = "Cookies", - AuthorizationEndpoint = "https://github.com/login/oauth/authorize", - TokenEndpoint = "https://github.com/login/oauth/access_token", - UserInformationEndpoint = "https://api.github.com/user", - SaveTokens = true, - Events = new OAuthEvents - { - OnTicketReceived = context => - { - // Cookie expire - context.Properties.IsPersistent = true; - context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddDays(30); - - return Task.FromResult(0); - }, - OnCreatingTicket = async context => - { - // Get the GitHub user - var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint); - request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken); - request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); - - var response = await context.Backchannel.SendAsync(request, context.HttpContext.RequestAborted); - response.EnsureSuccessStatusCode(); - - var user = JObject.Parse(await response.Content.ReadAsStringAsync()); - - var userId = user.Value("id"); - if (!string.IsNullOrEmpty(userId)) - { - context.Identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userId, ClaimValueTypes.String, context.Options.ClaimsIssuer)); - } - - var userName = user.Value("name"); - if (!string.IsNullOrEmpty(userName)) - { - context.Identity.AddClaim(new Claim(ClaimTypes.Name, userName, ClaimValueTypes.String, context.Options.ClaimsIssuer)); - } - - var avatar = user.Value("avatar_url"); - if (!string.IsNullOrEmpty(avatar)) - { - context.Identity.AddClaim(new Claim(User.AvatarKey, avatar, ClaimValueTypes.String, context.Options.ClaimsIssuer)); - } - - var url = user.Value("html_url"); - if (!string.IsNullOrEmpty(url)) - { - context.Identity.AddClaim(new Claim(ClaimTypes.Uri, url, ClaimValueTypes.String, context.Options.ClaimsIssuer)); - } - - context.Identity.AddClaim(new Claim(ClaimTypes.Authentication, "true", ClaimValueTypes.Boolean, context.Options.ClaimsIssuer)); - context.Identity.AddClaim(new Claim(ClaimTypes.AuthenticationMethod, context.Options.AuthenticationScheme, ClaimValueTypes.String, context.Options.ClaimsIssuer)); - } - } - }; - } - - public static MicrosoftAccountOptions MicrosoftOAuthOptions(Secret secret) - { - return new MicrosoftAccountOptions - { - AuthenticationScheme = "Microsoft", - DisplayName = "Microsoft", - ClientId = secret.ClientId, - ClientSecret = secret.ClientSecret, - CallbackPath = "/oauth-redirect/microsoft", - SaveTokens = true, - Events = new OAuthEvents - { - OnTicketReceived = context => - { - // Cookie expire - context.Properties.IsPersistent = true; - context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddDays(30); - - return Task.FromResult(0); - }, - OnCreatingTicket = context => - { - var user = context.User; - var userId = user.Value("id"); - var avatar = string.Format("https://apis.live.net/v5.0/{0}/picture", userId); - context.Identity.AddClaim(new Claim(User.AvatarKey, avatar, ClaimValueTypes.String, context.Options.ClaimsIssuer)); - - context.Identity.AddClaim(new Claim(ClaimTypes.Authentication, "true", ClaimValueTypes.Boolean, context.Options.ClaimsIssuer)); - context.Identity.AddClaim(new Claim(ClaimTypes.AuthenticationMethod, context.Options.AuthenticationScheme, ClaimValueTypes.String, context.Options.ClaimsIssuer)); - return Task.FromResult(0); - } - } - }; - } } } \ No newline at end of file diff --git a/Wukong/Startup.cs b/Wukong/Startup.cs index 6c3701d..81b2368 100644 --- a/Wukong/Startup.cs +++ b/Wukong/Startup.cs @@ -127,9 +127,7 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerF string redisConnectionString = RedisConnectionUtil.RedisConnectionDnsLookup(settings.RedisConnectionString); app.UseCookieAuthentication( Options.AuthenticationOptions.CookieAuthenticationOptions(redisConnectionString)); - - app.UseMicrosoftAccountAuthentication(OAuthProviderOptions.MicrosoftOAuthOptions(settings.Authentication.Microsoft)); - app.UseOAuthAuthentication(OAuthProviderOptions.GitHubOAuthOptions(settings.Authentication.GitHub)); + app.UseGoogleAuthentication(OAuthProviderOptions.GoogleOAuthOptions(settings.Authentication.Google)); app.UseWebSockets(); app.UseMiddleware();