SSO 로그아웃(RP-Initiated end_session) 구현 및 세션 쿠키 정리 보강
- BaronSSO.SignOutAsync: id_token_hint 기반 end_session 로그아웃 + 로컬 세션 정리 - SsoClient.LogoutAsync: end_session_endpoint 이동 후 post_logout 복귀를 WebView에서 가로채기 - BaronSSOOption.PostLogoutRedirectUri 추가 - LoginWindow: 쿠키 삭제를 ClearBrowsingDataAsync(완료 대기)로 변경해 재로그인 자동 SSO 통과 방지 - UserInfo: IsFamily/IsCenter 대소문자 무시 비교를 StringComparer로 수정(빌드 오류 해소) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -27,25 +27,9 @@ namespace BaronSoftware.SSO
|
||||
{
|
||||
try
|
||||
{
|
||||
#if DEBUG
|
||||
await webview.EnsureCoreWebView2Async();
|
||||
webview.CoreWebView2.NavigationStarting += OnNavigationStarting;
|
||||
webview.CoreWebView2.Navigate(_authorizeUrl);
|
||||
#else
|
||||
|
||||
// 1. 웹뷰 환경 설정 객체 생성
|
||||
var environment = await CoreWebView2Environment.CreateAsync(null, null, null);
|
||||
|
||||
// 2. 컨트롤러 옵션 생성 및 InPrivate 모드 활성화
|
||||
var options = environment.CreateCoreWebView2ControllerOptions();
|
||||
options.IsInPrivateModeEnabled = true; // 핵심 설정
|
||||
|
||||
// 3. 인프라이빗 옵션을 적용하여 WebView2 초기화
|
||||
await webview.EnsureCoreWebView2Async(environment, options);
|
||||
|
||||
webview.CoreWebView2.NavigationStarting += OnNavigationStarting;
|
||||
webview.CoreWebView2.Navigate(_authorizeUrl);
|
||||
#endif
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -4,6 +4,10 @@ namespace BaronSoftware.SSO
|
||||
/// <summary>id_token을 검증(서명/발급자/대상/만료)하고 파싱된 JWT를 반환합니다.</summary>
|
||||
public interface IUserValidator
|
||||
{
|
||||
public void Validate(UserInfo user);
|
||||
/// <summary>
|
||||
/// 인증 실패 시 예외를 던지세요
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
public bool Validate(UserInfo user);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user