fix(portal): skip unconfigured oauth providers
TaxBaik CI/CD / build-and-deploy (push) Successful in 53s
TaxBaik CI/CD / build-and-deploy (push) Successful in 53s
This commit is contained in:
+32
-14
@@ -64,7 +64,7 @@ if (isProduction && jwtKey.Contains("dev-secret", StringComparison.OrdinalIgnore
|
|||||||
throw new InvalidOperationException("Production JWT SecretKey must not use the development default.");
|
throw new InvalidOperationException("Production JWT SecretKey must not use the development default.");
|
||||||
var key = Encoding.ASCII.GetBytes(jwtKey);
|
var key = Encoding.ASCII.GetBytes(jwtKey);
|
||||||
|
|
||||||
builder.Services.AddAuthentication(opts =>
|
var authenticationBuilder = builder.Services.AddAuthentication(opts =>
|
||||||
{
|
{
|
||||||
opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||||
opts.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
opts.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||||
@@ -100,19 +100,30 @@ builder.Services.AddAuthentication(opts =>
|
|||||||
opts.Cookie.HttpOnly = true;
|
opts.Cookie.HttpOnly = true;
|
||||||
opts.Cookie.SameSite = SameSiteMode.Lax;
|
opts.Cookie.SameSite = SameSiteMode.Lax;
|
||||||
opts.Cookie.SecurePolicy = isProduction ? CookieSecurePolicy.Always : CookieSecurePolicy.SameAsRequest;
|
opts.Cookie.SecurePolicy = isProduction ? CookieSecurePolicy.Always : CookieSecurePolicy.SameAsRequest;
|
||||||
})
|
});
|
||||||
.AddGoogle(PortalOAuthDefaults.GoogleScheme, opts =>
|
|
||||||
|
var googleClientId = builder.Configuration["Authentication:Google:ClientId"];
|
||||||
|
var googleClientSecret = builder.Configuration["Authentication:Google:ClientSecret"];
|
||||||
|
if (!string.IsNullOrWhiteSpace(googleClientId) && !string.IsNullOrWhiteSpace(googleClientSecret))
|
||||||
{
|
{
|
||||||
|
authenticationBuilder.AddGoogle(PortalOAuthDefaults.GoogleScheme, opts =>
|
||||||
|
{
|
||||||
opts.SignInScheme = PortalOAuthDefaults.ExternalScheme;
|
opts.SignInScheme = PortalOAuthDefaults.ExternalScheme;
|
||||||
opts.ClientId = builder.Configuration["Authentication:Google:ClientId"] ?? "";
|
opts.ClientId = googleClientId;
|
||||||
opts.ClientSecret = builder.Configuration["Authentication:Google:ClientSecret"] ?? "";
|
opts.ClientSecret = googleClientSecret;
|
||||||
opts.CallbackPath = "/taxbaik/portal/signin-google";
|
opts.CallbackPath = "/taxbaik/portal/signin-google";
|
||||||
})
|
});
|
||||||
.AddOAuth(PortalOAuthDefaults.NaverScheme, opts =>
|
}
|
||||||
|
|
||||||
|
var naverClientId = builder.Configuration["Authentication:Naver:ClientId"];
|
||||||
|
var naverClientSecret = builder.Configuration["Authentication:Naver:ClientSecret"];
|
||||||
|
if (!string.IsNullOrWhiteSpace(naverClientId) && !string.IsNullOrWhiteSpace(naverClientSecret))
|
||||||
{
|
{
|
||||||
|
authenticationBuilder.AddOAuth(PortalOAuthDefaults.NaverScheme, opts =>
|
||||||
|
{
|
||||||
opts.SignInScheme = PortalOAuthDefaults.ExternalScheme;
|
opts.SignInScheme = PortalOAuthDefaults.ExternalScheme;
|
||||||
opts.ClientId = builder.Configuration["Authentication:Naver:ClientId"] ?? "";
|
opts.ClientId = naverClientId;
|
||||||
opts.ClientSecret = builder.Configuration["Authentication:Naver:ClientSecret"] ?? "";
|
opts.ClientSecret = naverClientSecret;
|
||||||
opts.CallbackPath = "/taxbaik/portal/signin-naver";
|
opts.CallbackPath = "/taxbaik/portal/signin-naver";
|
||||||
opts.AuthorizationEndpoint = "https://nid.naver.com/oauth2.0/authorize";
|
opts.AuthorizationEndpoint = "https://nid.naver.com/oauth2.0/authorize";
|
||||||
opts.TokenEndpoint = "https://nid.naver.com/oauth2.0/token";
|
opts.TokenEndpoint = "https://nid.naver.com/oauth2.0/token";
|
||||||
@@ -133,12 +144,18 @@ builder.Services.AddAuthentication(opts =>
|
|||||||
context.Identity?.AddClaim(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Email, responseRoot.GetProperty("email").GetString() ?? ""));
|
context.Identity?.AddClaim(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Email, responseRoot.GetProperty("email").GetString() ?? ""));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
})
|
});
|
||||||
.AddOAuth(PortalOAuthDefaults.KakaoScheme, opts =>
|
}
|
||||||
|
|
||||||
|
var kakaoClientId = builder.Configuration["Authentication:Kakao:ClientId"];
|
||||||
|
var kakaoClientSecret = builder.Configuration["Authentication:Kakao:ClientSecret"];
|
||||||
|
if (!string.IsNullOrWhiteSpace(kakaoClientId) && !string.IsNullOrWhiteSpace(kakaoClientSecret))
|
||||||
{
|
{
|
||||||
|
authenticationBuilder.AddOAuth(PortalOAuthDefaults.KakaoScheme, opts =>
|
||||||
|
{
|
||||||
opts.SignInScheme = PortalOAuthDefaults.ExternalScheme;
|
opts.SignInScheme = PortalOAuthDefaults.ExternalScheme;
|
||||||
opts.ClientId = builder.Configuration["Authentication:Kakao:ClientId"] ?? "";
|
opts.ClientId = kakaoClientId;
|
||||||
opts.ClientSecret = builder.Configuration["Authentication:Kakao:ClientSecret"] ?? "";
|
opts.ClientSecret = kakaoClientSecret;
|
||||||
opts.CallbackPath = "/taxbaik/portal/signin-kakao";
|
opts.CallbackPath = "/taxbaik/portal/signin-kakao";
|
||||||
opts.AuthorizationEndpoint = "https://kauth.kakao.com/oauth/authorize";
|
opts.AuthorizationEndpoint = "https://kauth.kakao.com/oauth/authorize";
|
||||||
opts.TokenEndpoint = "https://kauth.kakao.com/oauth/token";
|
opts.TokenEndpoint = "https://kauth.kakao.com/oauth/token";
|
||||||
@@ -161,7 +178,8 @@ builder.Services.AddAuthentication(opts =>
|
|||||||
context.Identity?.AddClaim(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Email, emailProp.GetString() ?? ""));
|
context.Identity?.AddClaim(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Email, emailProp.GetString() ?? ""));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Blazor 인증
|
// Blazor 인증
|
||||||
builder.Services.AddScoped<AuthService>();
|
builder.Services.AddScoped<AuthService>();
|
||||||
|
|||||||
Reference in New Issue
Block a user