dev_note/TIL
Owin Authentication 흐름
jjoylee
2022. 4. 25. 14:39
정확하게 이해했는지는 잘 모르겠지만 여러 곳 검색하면서 나름 이해한 것들을 정리해 보려 한다.
📌 AuthenticationMiddleware
CreateHanlder()에서 AuthenticationHandler 인스턴스 생성
AuthenticationOptions의 기본 값들 설정
📌 FLOW
1. SNS 로그인 버튼 클릭
인증 관리자에 대한 Challenge 생성 → 응답의 상태 코드를 401로 변경
Challenge : 신원을 확인해 달라는 요청
context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider);
2. AuthenticationHandler.ApplyResponseChallengeAsync()
주로 401 상태 코드의 응답(Challenge)을 처리하기 위한 로직 구현
Resource Owner와 상호 작용하고 보호된 리소스에 액세스할 수 있는 권한을 얻기 위해 Resource Server Login Page로 redirect (Authorization Endpoint)
Resource Owner는 로그인 후 리소스 사용에 동의
3. AuthenticationHandler.InvokeAsync()
Authorization Server의 올바른 인증 콜백인지 확인한다.
올바른 인증 콜백이면 AuthenticateAsync 메소드를 호출해서 인증 결과를 반환한다.
AuthenticationTicket ticket = await AuthenticateAsync();
4. AuthenticationHandler.AuthenticateCoreAsync()
state와 code 파라미터 값으로 validation check
code 값을 이용해 TokenEndPoint에 요청해서 access token을 발급받는다.
access token을 사용해 리소스 요청(계정 정보)